hdoj1102_Constructing Roads(最小生成树)
来源:互联网 发布:php zrem 编辑:程序博客网 时间:2024/04/30 11:52
用最小生成树kruskal算法求最小建造长度
#include<string.h>#include<iostream>#include<vector>#include<queue>#include<algorithm>using namespace std;struct edge{ int b, e, len;};struct cmpe{ bool operator()(edge e1, edge e2) { return e1.len > e2.len; }};priority_queue<edge, vector<edge>, cmpe> q;int par[200];int find(int x){ int tx = x; while (par[tx] >= 0) tx = par[tx]; while (x != tx) { int nx = par[x]; par[x] = tx; x = nx; } return tx;}void uni(int x, int y){ if (par[x] == par[y]) { par[x]--; par[y] = x; } else if (par[x] < par[y]) par[y] = x; else par[x] = y;}int kruskal(int n){ int res = 0; for (int i = 0; i < n-1;) { edge te = q.top(); q.pop(); int pb = find(te.b); int pe = find(te.e); if (pb != pe) { uni(pb, pe); i++; res += te.len; } } return res;}int main(){ int n; while (cin >> n) { while (!q.empty()) q.pop(); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { int clen; cin >> clen; q.push(edge{i,j,clen}); } int Q; cin >> Q; memset(par, -1, sizeof(par)); for (int i = 0; i < Q; i++) { int b, e; cin >> b >> e; int pb = find(b-1); int pe = find(e-1); if (pb != pe) { uni(pb, pe); n--; } } cout << kruskal(n) << endl; } return 0;}
0 0
- hdoj1102_Constructing Roads(最小生成树)
- Constructing Roads(最小生成树)
- hdoj_1102Constructing Roads(最小生成树)&& poj_2485Highways
- Jungle Roads(最小生成树)
- HDU1102 Constructing Roads(最小生成树)
- HDU1102 Constructing Roads(最小生成树)
- hdoj Constructing Roads(最小生成树)
- Constructing Roads(最小生成树)
- poj2421Constructing Roads(最小生成树)
- Constructing Roads (最小生成树 Kruskal)
- POJ11251---Jungle Roads(最小生成树)
- Roads and Libraries(最小生成树)
- Jungle Roads 最小生成树(kruskal)
- Constructing Roads (最小生成树)
- Building Roads(prim 最小生成树)
- Jungle Roads(最小生成树)
- HDU1102_Constructing Roads(最小生成树)
- POJ1251_Jungle Roads(最小生成树)
- 1、Java SE入门、jdk及第一个java程序
- 字符串输出某列
- leetcode: Isomorphic Strings
- poj 1466(二分图匹配)
- [Objective-C]消息机制工作原理
- hdoj1102_Constructing Roads(最小生成树)
- 211Add and Search Word - Data structure design
- 牛顿迭代法求解平方根
- java io 收集&整理
- Eclipse调整字体大小与自动补全
- sh 脚本重启tomcat
- 【Android】系统上的键盘监控
- Java桥模式(Bridge模式)
- 管理多类型标记变量的方法