链接:http://poj.org/problem?id=3522 这个题我就想知道我已经写那么完美了,他为啥a不掉!!!!!!!!!!!!!!!!!!!!!!
都来看看 啊~~~~~~~~~~
#include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> using namespace std; const int INF=111; const int M=999999999; int F[INF]; int res,cnt,n,m; struct Edge { int u,v,w; } per[INF*INF]; bool cmp(Edge a,Edge b) { return a.w<b.w; } int Find(int x) { if(x!=F[x]) F[x]=Find(F[x]); return F[x]; } void init() { for(int i=1; i<=n; i++) { F[i]=i; } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0) break; res=M; for(int i=0; i<m; i++) { scanf("%d%d%d",&per[i].u,&per[i].v,&per[i].w); } sort(per,per+m,cmp); int i,j,res=M; int temp; for(i=0; i<m; i++) { cnt=0; init(); for(j=i; j<m; j++) { temp=M; if(Find(per[j].u!=Find(per[j].v))) { F[per[j].u]=per[j].v; cnt++; if(cnt==n-1) { if(temp>per[j].w-per[i].w) temp=per[j].w-per[i].w; break; } } } if(temp<res) res=temp; } if(res!=M) printf("%d\n",res); else printf("-1\n"); } return 0; }
原文地址:http://blog.csdn.net/lsgqjh/article/details/46274569