Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么kruskal WA??

Posted by wenshameng at 2009-09-02 00:55:54 on Problem 1251
#include<algorithm>
using namespace std;
struct edge
{
	int x,y,c;
};
edge e[10000];
int t,m,n,s,total,f[30],temp,i;
char ch,ch1;
bool cmp(edge xx,edge yy)
{
	return(xx.c<yy.c);
}
int top(int x)
{
	if (f[x]!=x)
	{
	   f[x]=top(f[x]);
	}
	return(f[x]);
}
void union0(int i,int j,int k)
{
	int x,y;
	x=top(i);
	y=top(j);
	if (x!=y)
	{
	   total+=k;
	   s++;
	   f[x]=y;
	}
}
void kruskal()
{
	int i;
	sort(e+1,e+1+m,cmp);
	for (i=1;i<=n;i++)
		f[i]=i;
	for (i=1;i<=m;i++)
    {
		union0(e[i].x,e[i].y,e[i].c);
		if (s==n-1)break;
	}
}
int main()
{
	while(scanf("%d",&n)&&n!=0)
	{
	 m=0;
	 getchar();
     for (i=1;i<=n-1;i++)
	 {
		scanf("%c",&ch);
		scanf("%d",&t);
		getchar();
		while (t>0)
		{
			t--;
			scanf("%c %d",&ch1,&temp);
			getchar();
			m++;
			e[m].x=ch-'A'+1;
			e[m].y=ch1-'A'+1;
			e[m].c=temp;
		}
	 }
	 s=0;
	 total=0;
 	 kruskal();
     printf("%d\n",total);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator