poj1797 最短路变形
来源:互联网 发布:淘宝店商品怎么分类 编辑:程序博客网 时间:2024/05/16 19:53
题目大意:求第1个点到第n个点的路径中所有的边所能承受最小重力的最大值
思路: 刚开始一想没有思路然后想到用Floyd不断更新到每个点的最大值得最小值,TLE一发后想到这样做可能是错的,不仅仅是时间复杂度太高,更新过程中还要记录所有边的最小值,所以就想到了Dijkstra算法,不断更新距离已知集合的最大值不断把最大值得点加进去,中间记录答案
网上见有的人说最大生成树,确实有道理,prim算法和dijkstra算法只是更新的时候不一样而已
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1000+5;int f[maxn][maxn];int dis[maxn], vis[maxn];int n, m;void dijkstra(){for (int i = 1; i <= n; i++) dis[i] = f[1][i];memset(vis, 0, sizeof(vis));vis[1] = 1;dis[1] = 0;int ans = 0x7f7f7f7f;for (int i = 1; i <= n; i++){int mmax = 0, x = 0;for (int j = 1; j <= n; j++){if (!vis[j] && mmax < dis[j]) {mmax = dis[j];x = j;}}if(ans > mmax) ans = mmax;if (x == n) break;vis[x] = 1;for (int j = 1; j <= n; j++){if(!vis[j] && dis[j] < f[x][j])dis[j] = f[x][j];}}cout << ans << endl;}int main(){//freopen("in", "r", stdin);int t;int kcase = 0;cin >> t;while (t--){memset(f, 0, sizeof(f));cin >> n >> m;for (int i = 0; i < m; i++){int x, y, z;scanf("%d%d%d", &x, &y, &z);f[x][y] = f[y][x] = z;}printf("Scenario #%d:\n", ++kcase);dijkstra();cout << endl;}return 0;}
0 0
- poj1797 最短路变形
- poj1797 Heavy Transportation(最短路变形)
- poj1797 Heavy Transportation(最短路变形)
- POJ1797---Heavy Transportation(最短路变形)
- 最短路变形 nyoj1248、poj1797 dijkstra+堆优化
- 【POJ1797】Heavy Transportation 最短路
- 【最短路】poj1797 类SPFA
- POJ1797 Heavy Transportation 最短路
- 【POJ1797】 Heavy Transportation(最短路DIJ变种)
- 最短路变形_Poj_2253
- 最短路变形ural1934
- dij最短路 变形
- 最短路径(2)--poj1797(Dijkstra变形题)
- hdu 3499 最短路变形
- hdu_1596最短路小变形
- HDU 4360 最短路变形
- poj 1797 最短路变形
- poj 1797 最短路变形
- windows环境下的opencv在qt(msvc)上使用的配置
- Android如何键盘按键响应事件
- osgi6——camel配置学习
- MySql索引算法原理解析(通俗易懂,只讲B-tree)
- Android如何获取手机上面已经安装的app
- poj1797 最短路变形
- 【cJSON】CJSON学习笔记(二)
- java一些重要工具类
- linux基础教程---用户和组操作
- POJ 2092 Grandpa is Famous 水
- Python笔记
- 线程专用钩子和全局钩子的区别
- 代码定位
- sscanf()中表达式的用法