POJ 2377 - Bad Cowtractors(最小生成树)
来源:互联网 发布:奶酪陷阱知乎 编辑:程序博客网 时间:2024/06/13 20:42
题目:
http://poj.org/problem?id=2377
思路:
最小生成树+图是否联通的判断.
Kruskal:
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int INF = 1e9;const int maxn = 20005;struct edge{ int u, v, cost;}eg[maxn];int V, E;int par[1005];bool cmp(edge a, edge b){ return a.cost > b.cost;}void init(int n){ for(int i = 0; i <= n; ++i) par[i] = i;}int find(int x){ if(par[x] == x) return x; else { return par[x] = find(par[x]); }}void unite(int x, int y){ x = find(x); y = find(y); if(y < x) par[x] = y; else if(y > x) par[y] = x;}bool same(int x, int y){ return find(x) == find(y);}int kruskal(){ sort(eg, eg + E, cmp); init(V); int ans = 0, tmp = 0; for(int i = 0; i < E; ++i) { edge e = eg[i]; if(!same(e.u, e.v)) { unite(e.u, e.v); ans += e.cost; tmp++; } } if(tmp < V-1) ans = -1; return ans;}int main(){//freopen("in", "r", stdin); while(~scanf("%d %d", &V, &E)) { for(int i = 0; i < E; ++i) { scanf("%d %d %d", &eg[i].u, &eg[i].v, &eg[i].cost); } printf("%d\n", kruskal()); } return 0;}
Prim
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;typedef long long ll;const int INF =1e9;const int maxn = 1005;int n, m;int cost[maxn][maxn], d[maxn];bool used[maxn];int prim(){ memset(d, -1, sizeof(d)); memset(used, 0, sizeof(used)); d[1] = 0; int ans = 0; int t = 0; while(1) { int v = -1; for(int i = 1; i <= n; ++i) { if(!used[i] && (v == -1 || d[i] > d[v])) v = i; if(d[v] == -1) v = -1; } if(v == -1) { if(t < n) ans = -1; break; } t++; used[v] = 1; ans += d[v]; for(int i = 1; i <= n; ++i) { d[i] = max(d[i], cost[v][i]); } } return ans;}int main(){//freopen("in", "r", stdin); while(~scanf("%d %d", &n, &m)) { memset(cost, -1, sizeof(cost)); while(m--) { int a, b, c; scanf("%d %d %d", &a, &b, &c); cost[a][b] = max(c, cost[a][b]); cost[b][a] = max(c, cost[b][a]); } printf("%d\n", prim()); } return 0;}
0 0
- poj 2377 Bad Cowtractors(最小生成树)
- POJ 2377 - Bad Cowtractors(最小生成树)
- 【POJ】-2377-Bad Cowtractors(最小生成树)
- POJ 2377 Bad Cowtractors 最小生成树 Kruskal
- poj-2377-Bad Cowtractors--(最小生成树Kruskal)
- POJ 2377 Bad Cowtractors 最大生成树
- POJ 2377 Bad Cowtractors(最大生成树)
- POJ 2377 Bad Cowtractors【最大生成树】
- POJ 2377 Bad Cowtractors 【最大生成树】
- POJ 2377 - Bad Cowtractors(最大生成树)
- POJ-2377--Bad Cowtractors---最大生成树
- POJ 1258 Agri-Net(最小生成树) && POJ 2377 Bad Cowtractors(最大生成树)
- POJ 2377 Bad Cowtractors【最小生成树变形&&最大生成树】
- poj 2377 Bad Cowtractors(kruscal最小生成树存在性)
- POJ 2377 Bad Cowtractors [图论.最小生成树] 《挑战程序设计竞赛》2.5
- POJ2377 Bad Cowtractors 最小生成树
- poj2377 Bad Cowtractors(最小生成树)
- poj 2377 Bad Cowtractors (最‘大’生成树)
- gdb动态库调试分析文档
- eclipse常用快捷键
- How to Build a Python Bot That Can Play Web Games
- Android技术TextView属性详解
- CorePlot 第三方画曲线图饼图方案
- POJ 2377 - Bad Cowtractors(最小生成树)
- 重绘(刷帧)
- UISlider 控件
- Word 2007文件, 替换书签内容
- sublime中f7启动cocos2dx应用的方法
- Mercurial HG windows下nginx流媒体编译脚本备忘
- 小动画练习
- Find 命令 举例
- 定时器学习