POJ 1797 最短路

链接:

http://poj.org/problem?id=1797

题意:

给出N个城市M条边,每条边都有个容量,求一条运输路线,使城市1到城市N的运输量最大

代码:

31 int cost[MAXN][MAXN];
32 int d[MAXN];
33 int used[MAXN];
34 int n, m;
35 
36 void dijkstra() {
37     memset(d, 0, sizeof(d));
38     memset(used, 0, sizeof(used));
39     d[0] = INF;
40 
41     while (1) {
42         int v = -1;
43         rep(u, 0, n) if (!used[u] && (v == -1 || d[u] >= d[v])) v = u;
44         if (v == -1) break; used[v] = 1;
45         rep(u, 0, n) d[u] = max(d[u], min(d[v], cost[v][u]));
46     }
47 }
48 
49 int main() {
50     int T;
51     cin >> T;
52     rep(cas, 0, T) {
53         memset(cost, 0, sizeof(cost));
54         cin >> n >> m;
55         while (m--) {
56             int a, b, c;
57             scanf("%d%d%d", &a, &b, &c);
58             a--, b--;
59             cost[a][b] = cost[b][a] = c;
60         }
61         dijkstra();
62         cout << "Scenario #" << cas + 1 << ':' << endl;
63         cout << d[n - 1] << endl << endl;
64     }
65     return 0;
66 }

 

转载于:https://www.cnblogs.com/baocong/p/6786601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值