将边从小到大排序,然后从最小的开始枚举,判断连通,得到当前的速度最小差,比较得出最小值。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 struct po
 6 {
 7     int u,v,w;
 8 } s[1005];
 9 int p[1005];
10 int cmp(po a,po b)
11 {
12     return a.w<b.w;
13 }
14 int findSet(int x)
15 {
16     if (p[x] == x)
17         return x;
18     return findSet(p[x]);
19 }
20 int main()
21 {
22     int n,m;
23     while(scanf("%d%d",&n,&m)!=EOF)
24     {
25         for(int i=0;i<m;i++)
26         scanf("%d%d%d",&s[i].u,&s[i].v,&s[i].w);
27         sort(s,s+m,cmp);
28         for(int i=0;i<=n;i++) p[i]=i;
29         int t;
30         scanf("%d",&t);
31             int st[20],en[20],num[20],cha[20];
32             for(int i=0;i<t;i++)
33                 scanf("%d%d",&st[i],&en[i]);
34             memset(num,0,sizeof(num));
35             for(int i=0;i<t;i++)
36             cha[i]=2000000;
37             for(int k=0;k<m;k++)
38             {
39                 for(int i=0;i<=n;i++) p[i]=i;
40                 for(int i=k;i<m;i++)
41                 {
42                     int fx = findSet(s[i].u);
43                     int fy = findSet(s[i].v);
44                     if (fx != fy)
45                     p[fx] = fy;
46                     for(int j=0;j<t;j++)
47                     if(findSet(st[j])==findSet(en[j])&&num[j]==0)
48                     {
49                         if(s[i].w-s[k].w<cha[j])
50                         cha[j]=s[i].w-s[k].w;
51                     }
52                 }
53             }
54
55             for(int i=0;i<t;i++)
56             if(cha[i]!=2000000)
57             printf("%d\n",cha[i]);
58             else printf("-1\n");
59     }
60     return 0;
61 }

转载于:https://www.cnblogs.com/Acgsws/p/3216780.html

hdu1598(并查集)相关推荐

  1. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  2. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  3. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  4. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  5. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

  6. 【BZOJ1015】【JSOI2008】星球大战 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...

  7. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  8. 1013 Battle Over Cities(并查集解法)

    关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...

  9. 并查集专题练习:好朋友(未完待续)

    有空再把题目补上 输入样例1 4 2 1 4 2 3 样例输出1 2 输入样例2 7 5 1 2 2 3 3 1 1 4 5 6 输出样例2 3 解题思路: 1. 这题放在并查集的专题后面,有查找也有 ...

  10. 暑期集训5:并查集 线段树 练习题G: HDU - 1754

    2018学校暑期集训第五天--并查集 线段树 练习题G  --   HDU - 1754 I Hate It 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.  这让 ...

最新文章

  1. C语言调用easyX图形库画圆盘时钟
  2. 如何让GAN生成更高质量图像?斯坦福大学给你答案
  3. python 调用linux命令-Python 执行Linux系统命令的N种方法
  4. word设置不同页脚
  5. Python基础day05【函数应用:学生管理系统、拆包、今日总结】
  6. [USACO]地震 (二分答案+最优比率生成树详解)
  7. ffmpeg学习笔记-native原生绘制
  8. html 文本框 自动拼接,HTML 中table的结构以及拼接
  9. UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)
  10. 【操作系统】高速缓存和缓冲区
  11. PHP 二分查找(详细)
  12. PHP CI框架如何去掉 sql 里的反引号
  13. sevlet中web.xml 文件
  14. 【PHP】PHP include()和require()方法的区别
  15. comsol分析时总位移代表什么_通过仿真分析球形盖的变形问题
  16. 九大背包问题专题--分组背包问题
  17. 手机网络通过USB共享给台式机电脑
  18. 系统架构设计——互联网金融架构设计
  19. 2021年度软件企业 100 强榜单(附全名单)有你么?
  20. 推广文案写作有哪些技巧,母婴用品文案内容撰写时需要注意的事项

热门文章

  1. x86_64的内存映射
  2. VC++2010配置使用MySQL5.6
  3. 更改数据库管理员sa账户密码
  4. 金三银四产品人跳槽指南:这9本书帮你搞定升职加薪
  5. 《2017中国大数据及AI人才发展报告》均薪38万,招聘猛增6倍
  6. FreeModbus RTU传输
  7. 太强了,300分钟撸一个基于redis的亿级用户高并发系统
  8. C++之父:比特币是用C++开发的,我为此感到遗憾。
  9. DevOps是微服务的秘方
  10. Vue、element-ui的resetFields()方法重置表单无效问题及解决办法