比赛 NOIP水题争霸赛 评测结果 WWWWWWWWWWWWWWWWWWWW
题目名称 最小差异值 最终得分 0
用户昵称 君皓寒丶 运行时间 0.037 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2018-02-11 21:29:33
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int pre[5010];
struct edges{int x;
             int y;
             int z;
            }a[5010];
int cmp(const edges & a,const edges & b)
       {if(a.z<=b.z)
          return 1;
        return 0;
	   }
int find(int x)
        {if(pre[x]!=x)
           pre[x]=find(pre[x]);
         return pre[x];
        }

int main()
{
 freopen("dvalue.in","r",stdin);
 freopen("dvalue.out","w",stdout);
 int n,m,sum=0,maxx=-1,minn=50010;
 scanf("%d%d",&n,&m);
 for(int i=1;i<=n;i++)
    pre[i]=i;
 for(int i=1;i<=m;i++)
    {int xi,yi,zi;
     scanf("%d%d%d",&xi,&yi,&zi);
     a[i].x=xi;
     a[i].y=yi;
     a[i].z=zi;
	}
 sort(a+1,a+m+1,cmp);
 for(int i=1;i<=m;i++)
    {int xi=find(a[i].x),yi=find(a[i].y);
     if(xi!=yi)
       pre[xi]=yi;
     if(a[i].z<minn)
       minn=a[i].z;
     if(a[i].z>maxx)
       maxx=a[i].z;
	}
 printf("%d",maxx-minn);
 return 0;
}