ZOJ 2326 Tangled in Cables
2013-05-14 20:01
330 查看
裸体最小生成树.
#include <iostream> #include <cstdio> #include <string> #include <map> #include <algorithm> using namespace std; const int maxn = 301; map<string, int> sToNum; struct edge{ int u, v; double w; bool operator<(const edge & rhs)const{ return w < rhs.w; } }es[maxn * maxn]; double len; int id[maxn], size[maxn], n ,m; void init(int n){ sToNum.clear(); for (int i = 1; i <= n; ++i){ id[i] = i; size[i] = 1; } } int find(int p){ return p == id[p] ? p : id[p] = find(id[p]); } bool uni(int p, int q){ int pq = find(p), pp = find(q); if(pp == pq)return false; if(size[pp] > size[pq]){ id[pq] = pp; size[pp] += size[pq]; }else{ id[pp] = pq; size[pq] += size[pp]; } return true; } double kruskcal(int eidx){ sort(es, es + eidx); int i = 0, j = 0; double ans = 0; for (; i < eidx && j < n - 1; ++i){ if(uni(es[i].u, es[i].v)){ j++; ans += es[i].w; } } if(j == n -1){ return ans; }else{ return -1; } } int main(){ while (~scanf("%lf", &len)){ int eidx = 0; scanf("%d", &n); init(n); for (int i = 1; i <= n; ++i){ char name[30]; scanf("%s", name); sToNum[name] = i; } scanf("%d", &m); for (int i = 0; i < m; ++i){ char b1[30], b2[30]; double dis; scanf("%s %s %lf", b1, b2, &dis); int u = sToNum[b1], v = sToNum[b2]; es[eidx].u = u, es[eidx].v = v, es[eidx++].w = dis; es[eidx].u = v, es[eidx].v = u, es[eidx++].w = dis; } double ans = kruskcal(eidx); if(ans == -1){ printf("Not enough cable\n"); }else{ printf("Need %.1lf miles of cable\n",ans); } } return 0; }
相关文章推荐
- zoj 2326 Tangled in Cables
- poj_2075 Tangled in Cables
- Prim_poj2075 Tangled in Cables
- zoj 2326 Tangled in Cables【kruskal】
- 2075:Tangled in Cables
- poj 2075 Tangled in Cables
- POJ 2075 Tangled in Cables
- POJ2075--Tangled in Cables
- POJ 2075 Tangled in Cables
- CUGB图论专场:C - Tangled in Cables(最小生成树kruscal)
- Pku acm 2075 Tangled in Cables数据结构题目解题报告(十一)最小生成树:prim算法&amp;amp;二叉查找树
- zoj 2326 Tangled in Cables 最小生成树
- 哈理工acm练习赛 K - Tangled in Cables
- zoj 2326 Tangled in Cables
- zoj 2326 Tangled in Cables【最小生成树 kruskal && prim】
- ZOJ 2326 Tangled in Cables(最小生成树--prime)
- Pku acm 2075 Tangled in Cables数据结构题目解题报告(十一)最小生成树:prim算法&amp;amp;二叉查找树
- zoj 2326 || poj 2075 Tangled in Cables(MST)
- poj 2075 Tangled in Cables
- ZOJ&nbsp;2239&nbsp;In&nbsp;Danger