poj 1251 Jungle Roads
来源:互联网 发布:淘宝开店要求 编辑:程序博客网 时间:2024/06/07 03:19
原题链接:http://poj.org/problem?id=1251
用Prim求最小生成树。具体实现如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>#define Max_N 40#define INF 0x3f3f3f3f#define _min(a,b) ((a)>(b)?(b):(a))int V,vis[Max_N], mincost[Max_N], cost[Max_N][Max_N];void Prim(){ int u, res = 0; for (u = 0; u<V; u++) mincost[u] = (u == 0 ? 0 : INF); memset(vis, 0, sizeof(vis)); for (;;) { int v = -1; for (u = 0; u < V; u++){ if (!vis[u] && (-1 == v || mincost[u] < mincost[v])) v = u; } if (-1 == v) break; vis[v] = 1; res += mincost[v]; for (u = 0; u<V; u++) mincost[u] = _min(mincost[u], cost[v][u]); } printf("%d\n", res);}int main(){#ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w+", stdout);#endif int i, t, k; char s1[2],s2[2]; while (~scanf("%d", &V) && V){ for (i = 0; i < V; i++){ for (k = 0; k < V; k++)cost[i][k] = INF; } for (i = 1; i<V; i++){ scanf("%s%d", s1, &t); while (t--){ scanf("%s%d", s2, &k); int x = s1[0] - 'A', y = s2[0] - 'A'; cost[x][y] = cost[y][x] = k; } } Prim(); } return 0;}
0 0
- POJ 1251 Jungle Roads
- poj 1251 Jungle Roads
- poj 1251 Jungle Roads
- POJ-1251 jungle roads
- poj 1251 Jungle Roads
- POJ-1251-Jungle Roads
- POJ 1251 Jungle Roads
- Poj 1251 Jungle Roads
- POJ-1251-Jungle Roads
- POJ 1251 Jungle Roads
- POJ 1251 Jungle Roads
- POJ-1251-Jungle Roads
- POJ 1251 Jungle Roads
- POJ:1251 Jungle Roads
- POJ 1251 Jungle Roads
- POJ 1251 Jungle Roads
- POJ-1251 Jungle Roads
- poj 1251 Jungle Roads
- 仿函数functor
- MongoDB java客户端mongo-java-driver使用
- c++的前向声明
- shell 小数比较案例
- Unity UGUI——UI控件的鼠标快捷操作
- poj 1251 Jungle Roads
- vmare 无法获取vmci驱动程序版本:参数不正确解决方法
- matlab中的textread函数
- NotOnlySuccess 大牛的线段树的题目
- QT5 VS2010安装与配置
- #ifndef#define#endif的用法(整理)
- Codeforces Round #191 (Div. 2) D. Block Tower
- 第一周 项目3 时间类
- Spring面试题