hdu 1598 并查集,kruskal
来源:互联网 发布:和风天气json解析封装 编辑:程序博客网 时间:2024/05/22 13:55
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1598
先排序,i 一定为最小权值边,j 一定为最大边,找差值最小
kruskal生成树过程中,start和end连通即可停止,在 i 的循环里找出最小差值。
#include<string.h>#include<stdio.h>#include<algorithm>using namespace std;const int inf=999999999;int n,m,q,fa[210];struct edge{ int x,y,len;}e[1010];bool cmp(edge a,edge b){ return a.len<b.len;}int find(int x){ return fa[x] != x ? fa[x] = find(fa[x]) : x;}int solve(int a,int b){ int minn=inf; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++) fa[j]=j; for(int j=i;j<=m;j++){ int t1=find(e[j].x); int t2=find(e[j].y); if(t1!=t2) fa[t2]=t1; if(find(a)==find(b)){ minn = min(minn, e[j].len-e[i].len); // break; } } } if(minn==inf) minn=-1; return minn;}int main(){ int i,j,a,b,t; while(~scanf("%d%d",&n,&m)){ for(i=1;i<=m;i++) scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].len); sort(e+1,e+m+1,cmp); scanf("%d",&t); while(t--){ scanf("%d%d",&a,&b); printf("%d\n",solve(a,b)); } } return 0;}
阅读全文
0 0
- hdu 1598 并查集,kruskal
- HDU 1598(并查集 kruskal思想)
- HDU 1863 并查集+Kruskal
- hdu 1233 kruskal + 并查集
- kruskal+ 并查集
- Kruskal+并查集
- Kruskal + 并查集
- HDU 3938 Portal(离线+Kruskal+并查集)
- hdu 3367 Pseudoforest kruskal算法的变种+并查集
- hdu 3371 Connect the Cities (Kruskal+ 并查集)
- HDU 1863 畅通工程(Kruskal + 并查集)
- HDU 1875 畅通工程再续(Kruskal + 并查集)
- PKU #1251/HDU #1301 Jungle Roads(Kruskal+并查集)
- HDU畅通工程系列(并查集kruskal算法)
- HDU 5253 最小生成树(kruskal)+ 并查集
- hdu 1598 并查集+贪心---其实就是kruskal的思想
- HDU 1598 find the most comfortable road 【枚举+(并查集)最小生成树Kruskal】
- HDU 1598 find the most comfortable road (枚举+Kruskal) 并查集
- PyQt5 Windows 安装
- POJ---1273 Drainage Ditches【最大流】
- Backtracking:401. Binary Watch
- ubuntu系统自动执行脚本。
- Intellij Idea 将java项目打包成jar
- hdu 1598 并查集,kruskal
- 求两个链表是否相交,若相交,求交点(链表可能带环)
- 大数据分析与应用的8个场景
- 分布式同步化
- HTTP 415 错误 – 不支持的媒体类型(Unsupported media type)
- Writing Science
- HDU1197 Specialized Four-Digit Numbers
- 有符号整、小数的原、反、补码表示范围,及补码比原、反码多表示一位的原因
- 实验一:线性表的基本操作实现及其应用