Bad Cowtractors.(POJ-2377)
来源:互联网 发布:淘宝刷钻网站 编辑:程序博客网 时间:2024/05/15 07:22
最大生成树,只需要变一下改变值的部分就可以了。
尝试了一下运用并查集的kruskal算法,与prim相比各有利弊吧,还要根据数据特点适当选取。
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<map>using namespace std;int n,m,a,b,c,par[1005],rankk[1005];struct edge { int u,v,cost; edge(int u=0,int v=0,int cost=0) : u(u),v(v),cost(cost) {}};bool cmp(const edge& e1,const edge& e2) { return e1.cost>e2.cost;}edge es[20005];void init(int n) { for(int i=1;i<=n;i++) { par[i] = i; rankk[i] = 0; }}int findd(int x) { return par[x] == x ? x : par[x] = findd(par[x]);}void unite(int x,int y) { x = findd(x); y = findd(y); if(x==y) return ; if(rankk[x] < rankk[y]) { par[x] = y; } else { par[y] = x; if(rankk[x] == rankk[y]) rankk[x] ++ ; }}bool same(int x,int y) { return findd(x) == findd(y);}int kruskal() { sort(es,es+m,cmp); init(n); int res = 0; for(int i=0;i<m;i++) { edge e = edge(es[i].u,es[i].v,es[i].cost); if(!same(e.u,e.v)) { unite(e.u,e.v); res += e.cost; } } return res;}int main() { scanf("%d%d",&n,&m); for(int i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); es[i] = edge(a,b,c); } int sum = kruskal(); bool ok = true; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(i!=j) if(!same(i,j)) { ok = false; break; } } if(!ok) break; } if(ok) printf("%d\n",sum); else printf("-1\n"); return 0;}
0 0
- 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 2377 Bad Cowtractors
- poj 2377 Bad Cowtractors
- POJ 2377 Bad Cowtractors
- POJ 2377 Bad Cowtractors
- Bad Cowtractors.(POJ-2377)
- 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 2377Bad Cowtractors
- [SQL SERVER] 跨服务器查询
- 解决ScrollView中listview、gridview的嵌套问题
- android canvas类介绍
- csu1503 点到圆弧的距离
- Android Paint类的介绍
- Bad Cowtractors.(POJ-2377)
- Fragment-FragmentMannager中的方法
- codeforces A. Combination Lock 贪心
- @Repository、@Service、@Controller 和 @Component
- android代码编写布局和控件
- excel中怎样制作下拉菜单
- final关键字
- thinkphp框架中“关联操作”的完整定义详解
- 燕子bt下载无障碍