题目描述:
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
输入:
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
输出:
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
样例输入:
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
样例输出:
3
?


AC代码:

#include <iostream>
#include <queue>
using namespace std;typedef struct node{int start;int end;int len;
}Edge;struct cmp{bool operator() (Edge e1,Edge e2){return e1.len>e2.len;   }
};const int MAX = 5000;int data[MAX];int N,M,start,end,len,sum;char ch;priority_queue<Edge,vector<Edge>,cmp> Q;int Find(int root)
{if(data[root] < 0){return root;}return data[root] = Find(data[root]);
}void Union(int root1 ,int root2)
{root1 = Find(root1);root2 = Find(root2);if(root1 == root2){return;}else if(root1 < root2){data[root1] += data[root2];data[root2] = root1;}else{data[root2] += data[root1];data[root1] = root2;}M--;
}bool Kruskal(int &sum)
{while(!Q.empty()){Edge e = Q.top();Q.pop();int root1 = e.start;int root2 = e.end;if(Find(root1) != Find(root2)){sum += e.len;Union(root1,root2);}if(M == 1){break;}}return (M == 1);} int main()
{while(cin>>N>>M){if(N == 0){break;}while(!Q.empty()){Q.pop();}for(int i = 0 ; i < MAX ; i++){data[i] = -1;}sum = 0;for(int i = 0 ; i < N ; i++){cin>>start>>end>>len;Edge e;e.start = start;e.end = end;e.len = len;Q.push(e);}if(Kruskal(sum)){cout<<sum<<endl;    }else{cout<<"?"<<endl;}}return 0;
}

九度OJ——1024畅通工程相关推荐

  1. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

  2. 九度OJ——1028继续畅通工程

    题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任意两城镇间修 ...

  3. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

    题目描述: 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买.请问:你用有限的资金最 ...

  4. Freckles - 九度 OJ 1144

    Freckles - 九度 OJ 1144 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: In an episode of the Dick Van Dyke show, l ...

  5. 非常可乐(九度 OJ 1457)

    非常可乐(九度 OJ 1457) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 1.题目描述: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为.因为每次当 see ...

  6. 九度OJ 题目1179:阶乘

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1179:阶乘 * 来源:http://ac.jo ...

  7. Leagal or Not - 九度 OJ 1448

    Leagal or Not - 九度 OJ 1448 题目 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: ACM-DIY is a large QQ group where man ...

  8. 九度OJ 题目1069:查找学生信息 随笔

    ** 九度OJ 题目1069:查找学生信息 ** 题目描述如下: 输入N个学生的信息,然后进行查询. 输入 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息 ...

  9. 九度OJ 题目1203:IP地址

    /********************************* * 日期:2013-2-8 * 作者:SJF0115 * 题号: 九度OJ 题目1203:IP地址 * 来源:http://ac. ...

最新文章

  1. 开放平台架构_三步画出产品业务架构图
  2. vue hot true 不起作用_从源码解读 Vuex 注入 Vue 生命周期的过程
  3. 把所有的谎言献给你β(找规律数学题)
  4. 什么是java OOM?如何分析及解决oom问题?
  5. 与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]
  6. Python之递归函数
  7. vue xxx was assigned to but it has no setter.
  8. thymeleaf 学习笔记-基础篇(中文教程)
  9. 《scikit-learn》决策树之鸢尾花分类
  10. Typora+PicGo-Core(command line)+SMMS、github、gitee实现Typora图片上传到图床
  11. 背景铺满整个页面并且自适应
  12. 如何用计算机管理员权限,计算机管理员权限在哪里设置_电脑系统如何设置管理员权限-win7之家...
  13. xware for linux,Ubuntu 14.04安装迅雷Xware过程笔记
  14. CAD填充技巧:填充图案
  15. 吴恩达深度学习教程及资料
  16. ubuntu安装openpose
  17. Latex去除正文中的章节编号但同时在目标中保留索引
  18. 【可穿戴算法】-进阶-心率变异性分析
  19. 金匮要略重点整理 笔记
  20. 2021-2027全球与中国物联网网关设备市场现状及未来发展趋势

热门文章

  1. 算法--蒙特卡罗算法/正态分布随机数生成
  2. Python模块---海龟(turtle)
  3. 幂级数分奇偶项求收敛半径对比题
  4. Win7 激活状态出问题;Chrome OS 文件管理器功能变化
  5. opencv3计算机视觉python语言实现pdf_对比《OpenCV计算机视觉编程攻略第3版》《OpenCV 3计算机视觉Python语言实现第2版》PDF代码......
  6. PHP 转为金钱格式
  7. 计算机用户权限完全控制,win10用户权限管理文件夹怎么设置_win10文件夹完全控制权限操作方法...
  8. INPHO常见问题处理之Orthovista
  9. docker学习笔记:容器部署实战
  10. 不会函数,如何快速提取身份证周岁?