哇,哪个大佬帮忙看排序那里错了,70分,好人一生平安

P1111 修复公路

sort
by _不赦_ @ 2017-12-09 09:42:45


```cpp #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N=110000; int n,m,num,x,y,z,ans; int h[1100],f[1100],a[1100]; bool flag[1100]; struct node{ int x,y,z,next; }; node data[N*2]; bool cmp(node a,node b){ if(a.z>=b.z)return false; else return true; } bool check(){ for(int i=1;i<=n;i++)if(!flag[i])return false; return true; } int find(int x){ if(a[x]==x)return x; return a[x]=find(a[x]); } bool check1(){ int x1=find(1); for(int i=1;i<=n;i++){ if(find(a[i])!=x1)return false; } return true; } int main(){ scanf("%d%d",&n,&m); num=0; memset(h,0,sizeof h); memset(flag,false,sizeof flag); for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&z); flag[x]=true; flag[y]=true; data[++num].x=x; data[num].y=y; data[num].z=z; data[num].next=h[x]; h[x]=num; data[++num].x=y; data[num].y=x; data[num].z=z; data[num].next=h[y]; h[y]=num; } if(!check()){ printf("-1"); return 0; } sort(data+1,data+1+num,cmp); for(int i=1;i<=n;i++)a[i]=i; int flag1=data[1].z; for(int i=2;i<=num;i++){ if(flag1!=data[i].z){ if(check1()){ printf("%d",flag1); return 0; } flag1=data[i].z; } int x1=find(data[i].x); int y1=find(data[i].y); if(x1!=y1)a[x1]=data[i].y; } return 0; } ```
by liuqy @ 2017-12-09 14:01:10


|