hdu1598(并查集)
将边从小到大排序,然后从最小的开始枚举,判断连通,得到当前的速度最小差,比较得出最小值。
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(并查集)相关推荐
- 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈
题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...
- HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法
tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...
- POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树
一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...
- 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用
二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...
- 【BZOJ1015】【JSOI2008】星球大战 并查集
题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数. \(q\leq n\leq 400000,m\le ...
- 并查集 HDOJ 1232 畅通工程
题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...
- 1013 Battle Over Cities(并查集解法)
关于背景的介绍见1013 Battle Over Cities(图的DFS解法) DFS就是不算特定结点后数连通子图的总数,再减一.我想着那么并查集就是数不算特定节点后,集合元素(根)的个数.但是我弄 ...
- 并查集专题练习:好朋友(未完待续)
有空再把题目补上 输入样例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. 这题放在并查集的专题后面,有查找也有 ...
- 暑期集训5:并查集 线段树 练习题G: HDU - 1754
2018学校暑期集训第五天--并查集 线段树 练习题G -- HDU - 1754 I Hate It 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让 ...
最新文章
- C语言调用easyX图形库画圆盘时钟
- 如何让GAN生成更高质量图像?斯坦福大学给你答案
- python 调用linux命令-Python 执行Linux系统命令的N种方法
- word设置不同页脚
- Python基础day05【函数应用:学生管理系统、拆包、今日总结】
- [USACO]地震 (二分答案+最优比率生成树详解)
- ffmpeg学习笔记-native原生绘制
- html 文本框 自动拼接,HTML 中table的结构以及拼接
- UVA 12501 Bulky process of bulk reduction ——(线段树成段更新)
- 【操作系统】高速缓存和缓冲区
- PHP 二分查找(详细)
- PHP CI框架如何去掉 sql 里的反引号
- sevlet中web.xml 文件
- 【PHP】PHP include()和require()方法的区别
- comsol分析时总位移代表什么_通过仿真分析球形盖的变形问题
- 九大背包问题专题--分组背包问题
- 手机网络通过USB共享给台式机电脑
- 系统架构设计——互联网金融架构设计
- 2021年度软件企业 100 强榜单(附全名单)有你么?
- 推广文案写作有哪些技巧,母婴用品文案内容撰写时需要注意的事项