uva 10269 最短路
来源:互联网 发布:淘宝收货人搞笑名字 编辑:程序博客网 时间:2024/04/30 13:57
求两次最短路
#include <cstdio>#include <cstdlib>#include <cmath>#include <map>#include <set>#include <queue>#include <stack>#include <vector>#include <sstream>#include <string>#include <cstring>#include <algorithm>#include <iostream>#define maxn 105#define INF 0x7fffffff#define inf 10000000#define MOD 1000000007#define ull unsigned long long#define ll long longusing namespace std;int A, B, M, L, K, g[maxn][maxn];int d[maxn][12];bool inq[maxn][12];struct node{ int now, s; node(int i, int j) { now = i, s = j; }};void init(){ for(int i = 0; i < maxn; ++ i) for(int j = 0; j < maxn; ++ j) g[i][j] = inf;}void floyd(){ for(int k = 1; k <= A; ++ k) for(int i = 1; i <= A+B; ++ i) for(int j = 1; j <= A+B; ++ j) if(g[i][k] != inf && g[k][j] != inf) g[i][j] = min(g[i][j], g[i][k]+g[k][j]);}int spfa(){ for(int i = 0; i <= A+B; ++ i) for(int j = 0; j <= K; ++ j) d[i][j] = inf; memset(inq, 0, sizeof(inq)); queue<node> q; d[A+B][0] = 0; q.push(node(A+B, 0)); while(!q.empty()) { node t = q.front(); q.pop(); int u = t.now, k = t.s; inq[u][k] = false; for(int i = 1; i <= A+B; ++ i) { if(i == u) continue; if(k < K && g[u][i] <= L) { if(d[i][k+1] > d[u][k]) { d[i][k+1] = d[u][k]; if(!inq[i][k+1]) { inq[i][k+1] = true; q.push(node(i, k+1)); } } } if(d[i][k] > d[u][k]+g[u][i]) { d[i][k] = d[u][k]+g[u][i]; if(!inq[i][k]) { inq[i][k] = true; q.push(node(i,k)); } } } } int ans = inf; for(int i = 0; i <= K; ++ i) ans = min(ans, d[1][i]); return ans;}int main(){ int t; scanf("%d", &t); while(t --) { scanf("%d%d%d%d%d", &A, &B, &M, &L, &K); init(); for(int i = 0; i < M; ++ i) { int x, y, c; scanf("%d%d%d", &x, &y, &c); g[x][y] = g[y][x] = c; } floyd(); printf("%d\n", spfa()); } return 0;}
0 0
- uva 10269 最短路
- 最短路+dp uva 10269
- uva 10269 最短路+dp
- uva 10269 最短路变形
- uva 10048(最短路)
- UVA 11374 最短路
- UVA 10917 最短路
- UVA 1416 最短路
- UVA 10537 最短路
- uva 12661(最短路)
- UVA 10048最短路flody
- uva 1001 建图+最短路
- Uva 439 象棋最短路
- UVA 10537(最短路)
- Uva 10801 最短路,搜索
- UVA 10269 - Adventure of Super Mario(最短路 + dp)
- (beginer) 最短路 UVA 10269 Adventure of Super Mario
- UVA 10269Adventure of Super Mario 【最短路 + dp】
- android NDK的android.mk文件的详解
- Oracle一个中文汉字占用几个字节---小笔记
- C++专题:strlen和sizeof的区别
- Java + Flex + blazeds开发环境配置(Java工程和Flex工程独立)
- 2014~?学习计划
- uva 10269 最短路
- 父母是座老房子
- EditText的属性
- 博客地址收藏
- 2011/06/13 android使用html做UI的方法---js与java的相互调用
- JAVA代理机制详解
- C++/C题目
- linux-Tcp IP协议栈源码阅读笔记
- 挺不错的辞职信