Kruskal——模板
来源:互联网 发布:5g网络建设方案 编辑:程序博客网 时间:2024/05/16 13:02
#include <iostream>#include <cstdio>#include <algorithm>#include <map>#include <set>#include <queue>#include <stack>#include <cstring>#include <string>#include <cmath>#define maxi 50000 + 10#define maxn 20000 + 10#define INF 0x3f3f3f3fusing namespace std;struct edge{ int u,v,cost;};bool comp(const edge &a,const edge &b){ return a.cost < b.cost;}edge es[maxi];int V,E,N,M,T;int f[maxn];void input(){ for (int i = 0; i < E; i++) { scanf("%d%d%d",&es[i].u,&es[i].v,&es[i].cost); es[i].cost *= -1; es[i].v += N; }}void init(){ for(int i = 0; i < V; i++) f[i] = i; return ;}int find(int x){ if (x==f[x]) return x; else return f[x] = find(f[x]);}void unit(int x,int y){ x = find(x); y = find(y); if(x == y) return; else f[x] = y; return ;}bool same(int x,int y){ x = find(x); y = find(y); if (x==y) return true; else return false;}void solve(){ int ans=0; init(); input(); sort (es,es+E,comp); for(int j = 0; j < E; j++) { if (!same(es[j].u,es[j].v)) { ans += es[j].cost; unit(es[j].u,es[j].v); } } ans += V*(10000); cout << ans << endl;}int main(){ cin >> T; while(T--) { cin >> N >> M >> E; V = N + M; solve(); } return 0;}
0 0
- Kruskal——模板
- 最小生成树模板——kruskal
- 最小生成树—Kruskal模板
- 求解最小生成树——kruskal算法模板
- Kruskal模板
- kruskal模板
- kruskal模板
- kruskal模板
- Kruskal 模板
- kruskal模板
- Kruskal 模板
- kruskal模板
- Kruskal模板
- Kruskal模板
- 模板:kruskal
- hdu1879——继续畅通工程——————【kruskal模板】
- MST——Kruskal
- 模板整理——图论·最小生成树·Kruskal
- mysql has gone away问题解决
- onActivityResult 的使用
- Effective Modern C++(笔记)
- 扫雷游戏
- 图像特征提取
- Kruskal——模板
- Django app_urls设置
- C++中的继承
- 排序算法之基数排序
- HTML + CSS 学习
- SPSS独立样本t检验结果分析
- [MySQL] 空值新发现
- 排序算法之快速排序
- Windows Server 2012 配置指南 之 系统语言汉化篇