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 |
一直RE啊!求前辈们,大侠们,路过的看下代码指点一下啊!kruskal捉的。。。编译器都试过了。。。#include<iostream> #include<algorithm> #include<stdio.h> using namespace std; const int Max=501; int f[Max]; struct node{ int u,v,w; }edge[50000]; int n; bool cmp(node a,node b) { return a.w<=b.w?true:false; } int find(int x) { if(x!=f[x]) f[x]=find(f[x]); return f[x]; } void Union(int x,int y) { f[x]=y; } __int64 kruskal(int m) { __int64 cost=0; sort(edge,edge+m,cmp); for(int i=0;i<m;i++){ int fx=find(edge[i].u); int fy=find(edge[i].v); if(fx!=fy){ cost+=edge[i].w; Union(fx,fy); } } return cost; } int main() { int x,m,a,b; while(scanf("%d",&n)!=EOF){ m=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ scanf("%d",&x); if(i<j){ edge[m].u=i; edge[m].v=j; edge[m].w=x; m++; } } for(int i=0;i<=m;i++) f[i]=i; printf("%I64d\n",kruskal(m)); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator