HDU-1301-Jungle Roads
来源:互联网 发布:数据库unique 编辑:程序博客网 时间:2024/05/01 01:53
ACM模版
描述
题解
模版题,就是英文有些长了,真咋呼人,看了好久没看懂……最小生成树。
代码
#include <iostream>#include <cstring>#define mem(a, b) memset(a, b, sizeof(a))using namespace std;/* * Prim求MST * 耗费矩阵cost[][],初始化为INF,标号从0开始,0 ~ n-1 * 返回最小生成树的权值,返回-1表示原图不连通 */const int INF = 0x3f3f3f3f;const int MAXN = 27;bool vis[MAXN];int lowc[MAXN];int cost[MAXN][MAXN];// 修正cost(添加边)void updata(int x, int y, int v){ cost[x - 1][y - 1] = v; cost[y - 1][x - 1] = v; return ;}int Prim(int cost[][MAXN], int n) // 0 ~ n - 1{ int ans = 0; memset(vis, false, sizeof(vis)); vis[0] = true; for (int i = 1; i < n; i++) { lowc[i] = cost[0][i]; } for (int i = 1; i < n; i++) { int minc = INF; int p = -1; for (int j = 0; j < n; j++) { if (!vis[j] && minc > lowc[j]) { minc = lowc[j]; p = j; } } if (minc == INF) { return -1; // 原图不连通 } ans += minc; vis[p] = true; for (int j = 0; j < n; j++) { if (!vis[j] && lowc[j] > cost[p][j]) { lowc[j] = cost[p][j]; } } } return ans;}int main(int argc, const char * argv[]){ int N; char village[2]; // 字符串读入防止缓冲区出问题 int num; int len; while (cin >> N && N != 0) { mem(cost, 0x3f); mem(vis, 0); for (int i = 1; i < N; i++) { scanf("%s%d", village, &num); int temp = village[0] - 'A' + 1;// cout << temp << '\n'; for (int j = 0; j < num; j++) { scanf("%s%d", village, &len); updata(temp, village[0] - 'A' + 1, len); } } int ans = Prim(cost, N); cout << ans << '\n'; } return 0;}
参考
《最小生成树(森林)》
0 0
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- Hdu 1301 - Jungle Roads
- HDU 1301 Jungle Roads
- HDU 1301 Jungle Roads
- HDU 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- HDU 1301 Jungle Roads
- HDU 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu 1301 Jungle Roads
- hdu-1301 Jungle Roads
- hdu 1301 jungle roads
- hdu 1301 Jungle Roads
- 网狐_经典版机器人添加说明
- 剑指offer-二叉搜索树的后序遍历序列
- Golden Dream-11月
- HDU-5952 Counting Cliques(16年ICPC沈阳赛区)(暴力DFS)
- iOS 导航栏标题文字颜色渐变
- HDU-1301-Jungle Roads
- Build OpenCV 3.1 from source files on Windows
- python数据类型详解
- HDU 1106 排序(简单分类模拟)
- LeetCode 100. Same Tree
- Mac下使用mysql
- 爬动的蠕虫
- BSOJ 3022 又一类数字三角形--根据数据范围的优化+背包思想递推/搜索
- Atitit 编程语言原理与概论attilax总结 三大书籍总结