1001 ProblemA
来源:互联网 发布:ipowerl手指充电软件 编辑:程序博客网 时间:2024/05/17 09:18
题意:
有N个村庄 编号是从1到N,需要把他们连通起来,如果1到2和2到3有路,1到3也是连通的,给出每个村庄之间的距离,求修路最少要修多长才能使所有村庄连通。
思路:
这是一个最小生成树的问题,用Prim算法,选定一个点把与这个点相关的最小的边连上,然后再选与这两个点相关的最小的边连上,以此类推,直到全连上。
我本来用并查集做的,按边排序,把最小的边连上,总是超时,就又换了种思路。
#include<iostream>#include<fstream>#include<cstdio>#include<cstring>using namespace std;const int N = 110;const int INF = 0x3f3f3f3f;int n, ans;int map[N][N], dis[N], vis[N];void Prim() { int i; for (i = 1;i <= n;i++) { dis[i] = map[1][i]; vis[i] = 0; } vis[1] = 1; int j, k, tmp; for (i = 1;i <= n;i++) { tmp = INF; for (j = 1;j <= n;j++) if (!vis[j] && tmp>dis[j]) { k = j; tmp = dis[j]; } if (tmp == INF) break; vis[k] = 1; ans += dis[k]; for (j = 1;j <= n;j++) if (!vis[j] && dis[j]>map[k][j]) dis[j] = map[k][j]; }}int main() { fstream cin("E:/C++/IN/aaa.txt"); while (cin>>n) { for (int i = 1;i <= n;i++) for (int j = 1;j <= n;j++) cin>>map[i][j]; int q, a, b; cin>>q; while (q--) { cin >> a >> b; map[a][b] = map[b][a] = 0; } ans = 0; Prim(); cout << ans << endl; } return 0;}
0 0
- 1001 ProblemA
- problema
- problemA
- 贪心算法problemA(1000)
- 课程练习一 problemA id1000
- 动态规划——problemA
- Google Code Jam 2011 Qualification Round ProblemA
- Nescafe41 ProblemA 异化多肽 多项式求逆
- CF#317DIV.2,ProblemA,水题
- ProblemA 迷宫寻宝 -中北比赛
- 2016sdau课程练习专题一 1000 problemA
- gym101628 problemA Arthur's Language 递推DP
- Google 10月份在线笔试ProblemA(个人代码,未必最优,请不吝赐教)
- The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemA:Accurately Say "CocaCola"!
- The 6th Zhejiang Provincial Collegiate Programming Contest->ProblemA:Second-price Auction
- 2016 百度之星 ProblemA -- (Hash+乘法逆元,利用两种方法求逆元)
- The 5th Zhejiang Provincial Collegiate Programming Contest------ProblemA:Accurately Say "CocaCola"!
- The 6th Zhejiang Provincial Collegiate Programming Contest->ProblemA:Second-price Auction
- 对‘pthread_create’未定义的引用 对‘pthread_join’未定义的引用
- 计算机组成原理运算器的编程实现
- 用Kibana和logstash快速搭建实时日志查询、收集与分析系统
- IOS开发支持64位
- God Chang's interview——异或
- 1001 ProblemA
- java--------接口
- 服务器的相关配置
- Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法!
- poj_1657 棋盘上的距离
- 架构师的基本素质
- setxxx() 和 getxxx() 理解和使用
- 设计模式(1)_单例模式
- java 实现二路归并排序