poj1797
来源:互联网 发布:黑客破解刷扣币软件 编辑:程序博客网 时间:2024/05/17 06:14
题意:N个城市,M条街道,求出货车通过的最大载重量
思路:用dijkstra算法求最短路 松弛过程(例如 A到B 可经过C再到B )中保证 A到C 和 C到B 权值都大于 A到B 那么取其中较小的 否则取A到B
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define MAXN 1200
#define INF 200000000
using namespace std;
int map[MAXN][MAXN];
bool vis[MAXN];
int d[MAXN];
int n,m;
void dijstra()
{
int now,minx;
for(int i = 1; i <= n; i++)
{
d[i] = map[1][i];
}
vis[1] = true;
for(int i = 1; i <= n-1; i++)
{
minx = 0;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && d[j] > minx)
{
minx = d[j];
now = j;
}
}
vis[now] = 1;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && map[now][j]>d[j]&&d[now]>d[j])
d[j] = min(d[now],map[now][j]);
}
}
}
int main()
{
int T;
int ant = 1;
scanf("%d",&T);
while( T -- )
{
scanf("%d%d",&n,&m);
memset(map,0,sizeof(map));
for(int i = 0; i < m; i++)
{
int x,y,len;
scanf("%d%d%d",&x,&y,&len);
map[x][y] = map[y][x] = len;
}
memset(vis,0,sizeof(vis));
for(int i = 1; i <= n; i++)
{
d[i] = INF;
}
dijstra();
printf("Scenario #%d:\n",ant ++);
printf("%d\n\n",d[n]);
}
return 0;
}
0 0
- poj1797
- poj1797
- poj1797
- poj1797
- poj1797
- poj1797
- poj1797
- poj1797
- poj1797
- POJ1797
- poj1797
- poj1797--djikstra
- dijkstra--poj1797
- 【dijkstra】poj1797
- poj1797 dijkstra
- POJ1797 dij的变形。
- poj1797 dijkstra变形
- poj1797(dijstra)
- hihocoder #1249 枚举
- 11.函数和函数式编程
- MD5编码工具类 MD5Code.java
- nodejs 利用express框架 创建一个简单的web项目
- 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest D】【脑洞 构造】Distribution in Metagonia 把数以2^p3^
- poj1797
- 【2015-2016 ACM-ICPC, NEERC, Northern Subregional Contest E】【模拟 贪心】Easy Arithmetic 需要补 加减法表达式添加加减号使得数
- Fragment从入门到精通之fragment与activity的生命周期①
- 刷新电脑的DNS缓存
- QTP初级篇
- 快学scala习题(四)
- hihocoder #1255 枚举
- 探秘volley缓存网络数据
- GDAL\OGR C#中文路径不支持的问题解决方法