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

注意有重边,你好像没有考虑!!

Posted by ecjtubaowp at 2007-06-01 14:49:28 on Problem 2395
In Reply To:我为啥用Prim不能AC Posted by:030501619 at 2007-06-01 12:33:40
> 如题,总说WA。
> 牛人帮我看下把
> #include<iostream>
> using namespace std;
> int main()
> {
> 	int n,m;
> 	while(cin>>n>>m)
> 	{
> 		int i,j,k=0,u,v;
> 		long l,max,min;
> 		long **a=new long *[m];
> 		for(i=0;i<m;i++)
> 			a[i]=new long [3];
> 		long **b=new long *[n+1];
> 		for(i=0;i<n+1;i++)
> 			b[i]=new long [n+1];
> 		for(i=1;i<n+1;i++)
> 			for(j=1;j<n+1;j++)
> 				b[i][j]=0;
> 		for(i=0;i<m;i++)
> 			{
> 				cin>>u>>v>>l;
> 				b[u][v]=b[v][u]=l;
> 			}
> 		for(i=1;i<n+1;i++)
> 			for(j=1;j<n+1;j++)
> 				if(b[i][j]==0)
> 					b[i][j]=2147483647;
> 		bool *s=new bool [n+1];
> 		long *lowcost=new long [n+1];
> 		int *closest=new int [n+1];
> 		s[1]=true;
> 		for(i=2;i<=n;i++){
> 			lowcost[i]=b[1][i];
> 			closest[i]=1;
> 			s[i]=false;
> 		}
> 		for(i=1;i<n;i++){
> 			 min=2147483647;
> 			 j=1;
> 			 for(k=2;k<=n;k++)
> 				 if((lowcost[k]<min)&&(!s[k])){
> 					 min=lowcost[k];
> 					 j=k;
> 				 }
> 				 s[j]=true;
> 				 for(k=2;k<=n;k++)
> 					 if((b[j][k]<lowcost[k])&&(!s[k])){
> 						 lowcost[k]=b[j][k];
> 						 closest[k]=j;
> 					 }
> 		}
> 		max=0;
> 		for(i=2;i<=n;i++)
> 			if(s[i]==true&&lowcost[i]>max)
> 				max=lowcost[i];
> 		cout<<max<<endl;
> 	}
> 	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