POJ
来源:互联网 发布:松下触摸屏编程软件 编辑:程序博客网 时间:2024/05/22 00:36
题目大意:n 个城市 m 条道路,每条路都有一个承载量,求最大承载量。
解题思路:最大生成树,无向图,dijkstra。对于每条路线来说,最大承载量是该条路线所有道路承载量中的最小值
#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<string.h>#include<string>#include<queue>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))const int INF = 0x3f3f3f3f;const int NINF = -INF -1;const int MAXN = 1e3+5;using namespace std;int T, n, m;int map[MAXN][MAXN];int dis[MAXN];bool vis[MAXN];void dijkstra() { for (int i = 1; i <= n; i++) dis[i] = map[1][i]; for (int i = 1; i <= n; i++) { int v, maxx = -1; for (int j = 1; j <= n; j++) if (!vis[j] && dis[j] > maxx) { maxx = dis[j]; v = j; } vis[v] = true; for (int j = 1; j <= n; j++) if (!vis[j] && dis[j] < min(dis[v], map[v][j])) dis[j] = min(dis[v], map[v][j]); }}int main() { scanf("%d", &T); for (int t = 0; t < T; t++) { scanf("%d%d", &n, &m); memset(map, 0, sizeof(map)); memset(vis, 0, sizeof(vis)); memset(dis, 0, sizeof(dis)); for (int i = 0; i < m; i++) { int a, b, l; scanf("%d%d%d", &a, &b, &l); map[a][b] = map[b][a] = l; } dijkstra(); printf("Scenario #%d:\n%d\n\n", t+1, dis[n]); } return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- HDU 3062 Party(2-SAT模板)
- 组合模式
- 系统设计:关于高可用系统的一些技术方案
- 软件开发工具选择
- 首次适应(FirstFit)算法(空闲区地址递增)
- POJ
- ♪ ♩ ♫海的声音-《管理学的应用题-破局而出》
- 读书笔记之邻家的百万富翁
- C# hijack NSQuery::LookupServiceNext(DNS解析)
- 65. Valid Number
- 信仰缺失下的迷茫 (白岩松)
- 【南阳】字符串匹配
- redis简介01
- HDU 1010 Tempter of the Bone 【深搜+奇偶剪枝】