并查集优化下-3
2017-03-06 16:07
274 查看
#include<bits/stdc++.h> using namespace std; const int N=10000,M=100000; int f[N+100]; int siz[N+100]; struct nodes { int u,v,w; }node[M+100]; bool cmp(nodes p,nodes q) { return p.w>q.w; } void init(int n) { for(int i=1;i<=n;i++) f[i]=i; for(int i=1;i<=n;i++) siz[i]=1; } int Find(int x) { if(x==f[x]) return x; return Find(f[x]); } int Union(int x,int y) { int tx,ty; tx=Find(x); ty=Find(y); if(tx==ty) return 0; if(siz[tx]<siz[ty]) {f[tx]=ty;siz[ty]+=tx;} else {f[ty]=tx;siz[tx]+=ty;} return 1; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0;i<m;i++) scanf("%d%d%d",&node[i].u,&node[i].v,&node[i].w); sort(node,node+m,cmp); init(n); int ans=0,pre=-1; for(int i=0;i<m;i++) { int way=Union(node[i].u,node[i].v); if(way&&node[i].w!=pre) { ans++; pre=node[i].w; } } printf("%d\n",ans); return 0; }
国王的烦恼
相关文章推荐
- [POJ 1456]Supermarket[贪心][优先队列or并查集优化]
- POJ 1456——Supermarket——————【贪心+并查集优化】
- bzoj1576[Usaco2009 Jan]安全路径Travel(堆优化dijkstra+并查集)
- 并查集(两个优化—按秩合并、路径压缩) poj2492
- 并查集的优化
- 基于Rank的并查集优化
- 并查集的优化---路径压缩与启发式合并
- HDU 1856 More is better(并查集路径压缩+剪枝优化+暴力枚举)
- BZOJ 1854 二分图匹配 (时间戳优化匈牙利 ) 并查集
- [BZOJ1576] [Usaco2009 Jan]安全路经Travel(堆优化dijk + (并查集 || 树剖))
- CodeForces - 357C Knight Tournament ——并查集优化
- 十、森林与并查集---(6)并查集路径压缩优化
- G - Supermarket ——贪心+并查集优化时间复杂度
- Corporative Network UVA - 1329 加权并查集(压缩路径优化)
- 并查集的“并优化”(leader合并)和“查优化”(路径压缩)
- 并查集及优化
- POJ 1456 Supermarket(贪心算法,可用并查集优化)
- 基于Size的并查集优化
- 并查集-一笔画优化
- 一个并查集问题的优化(CDOJ 203)