这是一个蜜汁WA了的代码。。

  说好的样例对了就是对了呢orz

  反正我个人认为思路是没问题的不知道WA在哪了,丢个坑在这里以后填吧

 //思路:
//1节点连接的边都记录下来,依次克鲁斯卡尔枚举得出最小值。
//排序思路:将所有边按与枚举的边的差值排序。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int inf = (<<)-;
const int maxn=1e2+;
struct qa
{
int u,v,w;
}q[];
int n,m;
int mf;
int f[maxn],p[maxn];
bool b[maxn];
inline bool cmp(const qa &a,const qa &b)
{
return abs(a.w-mf)<abs(b.w-mf);
}
inline int find1(int x)
{
return f[x]==x?x:f[x]=find1(f[x]);
}
int zx()//就是克鲁斯卡尔。。
{
int t=;
for(int i=;i<=n;i++)
f[i]=i;
int maxx=mf,minn=mf;
sort(q+,q+m+,cmp);
for(int i=;i<=m;i++)
{
int x=find1(q[i].u),y=find1(q[i].v);
if(x!=y)
{
f[x]=y;
maxx=max(maxx,q[i].w);
minn=min(minn,q[i].w);
t++;
}
if(t==n-)return maxx-minn;
}
return -;
}
int main()
{
while(scanf("%d%d",&n,&m),n||m){
int ans=;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w);
if(q[i].u==||q[i].v==)p[++ans]=q[i].w;
}
int minn=inf;
for(int i=;i<=ans;i++)
{
mf=p[i];
int mm=zx();
if(mm==-)continue;
minn=min(minn,mm);
}
if(minn!=inf)printf("%d\n",minn);
else printf("-1\n");
}
return ;
}

最新文章

  1. 【原】react中如何使用jquery插件
  2. 数据库的char(n)
  3. NSNumber和NSValue
  4. 单步调试 step into/step out/step over 区别
  5. js+css实现带缓冲效果右键弹出菜单
  6. asp.net上传Excel文件到服务端进行读取
  7. 读书笔记_Effective_C++_条款二十四: 若所有参数皆需类型转换,请为此采用non-member函数
  8. ssma for oracle
  9. js广告轮询效果
  10. 【BZOJ4571】美味(主席树)
  11. jQuery取得radio的值 取select得值
  12. .net core 获取不到session 和cookies的值
  13. jquery easyui datagrid mvc server端分页排序筛选的实现
  14. inheritPrototypal.js
  15. JavaScript学习(五)
  16. 初探AngularJs框架(一)
  17. 浅谈Java中static关键字、权限修饰符
  18. 【Fiddler学习】Fiddler抓包HTTPS请求和手机抓包
  19. usb_ctrl
  20. C语言从零开始(十四)-字符串处理

热门文章

  1. Java中String常用方法总结
  2. Leetcode(104)之二叉树的最大深度
  3. Linux--Centos下搭建Git服务器
  4. MySQL--MySQL分区
  5. python获取当前时间戳
  6. 论文翻译——Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
  7. numpy 加速 以及 ipython
  8. Django框架篇
  9. Drools规则引擎详解-常用的drl实例
  10. 基于Dijsktra算法的最短路径求解