POJ-1797.HeavyTransportation(最长路中的最小权值)
2024-08-20 16:19:52
本题思路:最短路变形,改变松弛方式即可,dist存的是源结点到当前结点的最长路的最小权值。
参考代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std; const int maxn = + ;
int n, m, k, Case = , G[maxn][maxn], dist[maxn];
bool vis[maxn]; int Dijkstra(int source, int aid) {
for(int i = ; i <= n; i ++)
dist[i] = (i == source ? INF : );
for(int i = ; i <= n; i ++) {
int minf = -;
for(int j = ; j <= n; j ++)
if(!vis[j] && minf < dist[j]) {
minf = dist[j];
k = j;
}
vis[k] = true;
if(minf == - ) break;
for(int j = ; j <= n; j ++)
if(!vis[j] && dist[j] < min(dist[k], G[k][j]))
dist[j] = min(dist[k], G[k][j]);
}
return dist[aid];
} int main () {
int t, x, y, w;
scanf("%d", &t);
while(t --) {
memset(vis, false, sizeof vis);
for(int i = ; i <= n; i ++) {
for(int j = ; j <= n; j ++)
G[i][j] = ;
}
scanf("%d %d", &n, &m);
for(int i = ; i <= m; i ++) {
scanf("%d %d %d", &x, &y, &w);
G[x][y] = G[y][x] = max(G[x][y], w);
}
printf("Scenario #%d:\n%d\n\n", ++Case, Dijkstra(, n));
}
return ;
}
最新文章
- ios 弹出不同的键盘
- 关闭显示器API及命令
- 让fdisk输出更准确合理
- [Python]Unicode转ascii码的一个好方法
- [LeetCode]Palindrome Partitioning 找出所有可能的组合回文
- TSP问题(旅行商问题)[分支限界法]
- JavaScript函数部分
- 笔记:Hibernate SQL 查询
- python3+selenium入门06-浏览器操作
- Linux服务器CPU使用率较低但负载较高
- 将指定世界中的指定位置的Block转化为箱子
- HTML5特性&;&;canvas
- Collection集合复习方法回顾
- Python 中Lambda 表达式 实例解析
- VMware下的Linux系统中Windows的共享目录,不支持创建软连接
- UI---------EventSystem
- 史上最全的Maven Pom文件标签详解
- 《python编程从入门到实践》第六章笔记
- shell重温---基础篇(printf命令&;test命令)
- STM32空闲中断