POJ1251 Jungle Roads(Kruskal)(并查集)
2016-08-02 12:53
267 查看
Jungle Roads
Description
View Code
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 23882 | Accepted: 11193 |
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <algorithm> #include <climits> #include <cstring> #include <string> #include <set> #include <map> #include <queue> #include <stack> #include <vector> #include <list> #include<functional> #define mod 1000000007 #define inf 0x3f3f3f3f #define pi acos(-1.0) using namespace std; typedef long long ll; const int N=1005; const int M=15005; struct Edg { int v,u; int w; } edg[M]; bool cmp(Edg g,Edg h) { return g.w<h.w; } int n,m,maxn,cnt; int parent ; void init() { for(int i=0; i<n; i++)parent[i]=i; } void Build() { int w,k; char u,v; for(int i=0; i<n-1; i++) { cin>>u>>k; while(k--) { cin>>v>>w; edg[++cnt].u=u-'A'; edg[cnt].v=v-'A'; edg[cnt].w=w; } } sort(edg,edg+cnt+1,cmp); } int Find(int x) { if(parent[x] != x) parent[x] = Find(parent[x]); return parent[x]; }//查找并返回节点x所属集合的根节点 void Union(int x,int y) { x = Find(x); y = Find(y); if(x == y) return; parent[y] = x; }//将两个不同集合的元素进行合并 void Kruskal() { int sum=0; int num=0; int u,v; for(int i=0; i<=cnt; i++) { u=edg[i].u; v=edg[i].v; if(Find(u)!=Find(v)) { sum+=edg[i].w; num++; Union(u,v); } //printf("!!!%d %d\n",num,sum); if(num>=n-1) { printf("%d\n",sum); break; } } } int main() { while(~scanf("%d",&n)&&n) { cnt=-1; init(); Build(); Kruskal(); } return 0; }
View Code
相关文章推荐
- POJ1251 Jungle Roads(最小生成树,Kruskal)
- POJ - 1251 Jungle Roads (最小生成树Kruskal、并查集)
- 1406 Jungle Roads(kruskal, 并查集)
- ZOJ1406 POJ1251 Jungle Roads,Prim算法~
- swust 1813 最小生成树 kruskal 并查集
- SSL2687 2017年8月14日提高组T1 跳跃(kruskal,并查集)
- 杭电-1301 Jungle Roads (kruskal)
- HDU 1301--Jungle Roads 【Kruskal】
- Kruskal poj 1287 示例 [ 实现用到并查集 ]
- hdu2988Dark roads (最小生成树之kruskal 算法(主要是并查集))
- CSU-ACM2018寒假训练9B-并查集&Kruskal E - 简单的种类并查集
- hdu 3367 Pseudoforest 伪森林 题目很难懂,模仿kruskal,并查集检查两个节点是否是一个环
- POJ 1251 Jungle Roads(Prim or kruskal)
- hdu 1879_并查集_最小生成树_Kruskal
- Jungle Roads解题分析(并查集,最小生成树,输入格式)
- HDU-1301 Jungle Roads 并查集/最小生成数
- HDU 5253 最小生成树(kruskal)+ 并查集
- 真正的Kruskal poj 1258(应用了并查集)
- POJ - 1251 Jungle Roads —— kruskal
- poj1251 Jungle Roads