HDU 1301 Jungle Roads (最小生成树)
2015-06-02 16:51
471 查看
Jungle Roads
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5037 Accepted Submission(s): 3656
[align=left]Problem Description[/align]
#include <iostream> #include <cstdio> #include <string> #include <queue> #include <vector> #include <map> #include <algorithm> #include <cstring> #include <cctype> #include <cstdlib> #include <cmath> #include <ctime> using namespace std; const int SIZE = 30; int FATHER[SIZE],N,NUM; struct Node { int from,to,cost; }G[100]; void ini(void); int find_father(int); void unite(int,int); bool same(int,int); int kruskal(void); bool comp(const Node &,const Node &); int main(void) { char ch; int from,to,cost,k; while(scanf("%d",&N) && N) { ini(); for(int i = 0;i < N - 1;i ++) { scanf(" %c%d",&ch,&k); from = ch - 'A'; while(k --) { scanf(" %c%d",&ch,&cost); to = ch - 'A'; G[NUM].from = from; G[NUM].to = to; G[NUM].cost = cost; NUM ++; } } printf("%d\n",kruskal()); } return 0; } void ini(void) { NUM = 0; for(int i = 0;i <= N;i ++) FATHER[i] = i; } int find_father(int n) { if(n == FATHER ) return n; return FATHER = find_father(FATHER ); } void unite(int x,int y) { x = find_father(x); y = find_father(y); if(x == y) return ; FATHER[x] = y; } bool same(int x,int y) { return find_father(x) == find_father(y); } bool comp(const Node & a,const Node & b) { return a.cost < b.cost; } int kruskal(void) { int count = 0; int ans = 0; sort(G,G + NUM,comp); for(int i = 0;i < NUM;i ++) if(!same(G[i].from,G[i].to)) { unite(G[i].from,G[i].to); ans += G[i].cost; count ++; if(count == N - 1) break; } return ans; }
Kruskal
相关文章推荐
- windows8 取得系统信息
- 从零开始系列之iOS地图获取当前城市
- codeforces ice cave
- window.setInterval和window.setTimeout
- Linux常用操作
- cvc-elt.1: Cannot find the declaration of element 'ehcache'.
- jQuery插入,复制、替换和删除节点
- LeetCode_11---Container With Most Water
- 常用的Javascript设计模式
- Xcode工程依赖
- UIWebView的使用
- js变量作用域问题
- Python基础:13装饰器
- iOS中如何通过instruments工具来找崩溃信息
- linux程序设计——shell程序设计(第二章)
- Apache编译、PHP编译
- 重装后只有C盘,资料丢失
- codeforces school mark(贪心)
- javascript闭包的学习
- Java分布式应用技术架构介绍