hdoj 1301 Jungle Roads
来源:互联网 发布:mac如何看电池损耗 编辑:程序博客网 时间:2024/05/17 06:24
很好写的一个prim。
一个小技巧:输入这样的字符主句时最好使用c++中的cin,cin会自动过滤掉空格,而scanf不会,当然些习惯了用scanf或getchar也无所谓,毕竟scanf输入大数据比cin快。本人在很久以前用cin超时用scanf过了一个题之后习惯也是输入用scanf,不过遇到字符就cin。
/*Hdoj: 1301 Jungle Roads*/#include <iostream>#include <cstdio>#include <cstring>#define MaxV 30#define MaxL 10000using namespace std;int map[MaxV][MaxV];int dis[MaxV];bool visited[MaxV];int n;int Prim(){ visited[0] = true; dis[0] = 0; for(int i = 1; i < n; i++) { dis[i] = map[0][i]; visited[i] = false; } int low_cost = 0; for(int i = 1; i < n; i++) { int tmp = MaxL; int tmp_index = 0; for(int j = 0; j < n; j++) { if(!visited[j] && dis[j] < tmp) { tmp = dis[j]; tmp_index = j; } } visited[tmp_index] = true; low_cost += tmp; for(int k = 0; k < n; k++) { if(!visited[k] && dis[k] > map[tmp_index][k]) { dis[k] = map[tmp_index][k]; } } } return low_cost;}int main(){ //freopen("data.in", "rb", stdin); while(scanf("%d", &n) != EOF && n != 0) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { map[i][j] = MaxL; } } for(int i = 0; i < n - 1; i++) { char c; int k; cin >> c >> k; while(k--) { int m; cin >> c >> m; map[i][c-'A'] = map[c-'A'][i] = m; } } printf("%d\n", Prim()); } return 0;}
- HDOJ 1301 Jungle Roads
- hdoj 1301 Jungle Roads
- HDOJ--1301--Jungle Roads
- hdoj 1301 Jungle Roads
- ACM HDOJ 1301 (Jungle Roads)
- HDOJ-1301-POJ-Jungle Roads
- hdoj 1301 Jungle Roads 【迪杰斯特拉】
- Jungle roads (zoj 1406 hdoj 1301)
- hdoj 1301 Jungle Roads 【最小生成树】
- POJ 1251 / HDOJ 1301 Jungle Roads
- hdoj-1301-Jungle Roads【最小生成树】
- HDOJ 1301 Jungle Roads(最小生成树)
- hdoj 1301 Jungle Roads 【最小生成树】
- hdoj-1301 Jungle Roads 【最小生成树】
- hdoj--1301--Jungle Roads(克鲁斯卡尔)
- HDOJ 1301 Jungle Roads(最小生成树
- HDOJ Jungle Roads
- Jungle Roads --hdoj
- 通过用数组名作函数参数来实现选择排序法
- 关于oracle中的in 和 exist
- poj 3971
- 电子邮件的五层协议
- java产生随机数的方法。
- hdoj 1301 Jungle Roads
- configSections
- 生产者、消费者
- 博客突破10万写点东西
- Megaupload关闭波及Filesonic 分享功能被停
- 指针详解
- Win32ASM && 变长参数的理解
- listView
- 第五周实验报告(任务1)