| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求大佬看看我的代码。。数据都过了 但就是WA#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=1000;
int u[maxn],v[maxn],w[maxn],p[maxn],r[maxn];
int cmp(const int i,int j)
{
return w[i]<w[j];
}
int find(int x)
{
return p[x]==x ? x:p[x]=find(p[x]);
}
int kruskal(int m)
{
int ans=0;
for(int i=0;i<m;i++) p[i]=i;
for(int i=0;i<m;i++) r[i]=i;
sort(r,r+m,cmp);
for(int i=0;i<m;i++)
{
int e=r[i];
int x=find(u[e]);
int y=find(v[e]);
if(x!=y)
{
ans+=w[e];
p[x]=y;
}
}
return ans;
}
int main()
{
int n,m=0,cnt1=0,cnt2=0,j; char a,b;
while(cin>>n&&n!=0)
{
memset(u,0,sizeof(u));
memset(v,0,sizeof(v));
memset(w,0,sizeof(w));
memset(p,0,sizeof(p));
memset(r,0,sizeof(r));
for(int i=0;i<n-1;i++)
{
cin>>a;
cin>>j;
if(j>0)
{
u[cnt1++]=a-'A'+1;
for(int vv=1;vv<j;vv++) u[cnt1++]=a-'A'+1;
for(int k=0;k<j;k++)
{
cin>>b; v[cnt2++]=b-'A'+1;
cin>>w[m++];
}
}
}
cout<<kruskal(m)<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator