uva 10269 最短路
求两次最短路
#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 long
using 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;
}
uva 10269 最短路的更多相关文章
- UVA 10269 Super Mario,最短路+动态规划
这个题目我昨晚看到的,没什么思路,因为马里奥有boot加速器,只要中间没有城堡,即可不耗时间和脚力,瞬间移动不超过L距离,遇见城堡就要停下来,当然不能该使用超过K次...我纠结了很久,最终觉得还是只能 ...
- uva 11374 最短路+记录路径 dijkstra最短路模板
UVA - 11374 Airport Express Time Limit:1000MS Memory Limit:Unknown 64bit IO Format:%lld & %l ...
- 【Uva 10269 马里奥与公主的归途】
·马里奥n次解救了公主,现在需要从魔王的宫殿返回. ·英文题,述大意: 给定一个点数不超过100的无向图,其中的点分为两类:乡村和城堡. 输入A个乡村,B个城堡(乡村编号1~A,城堡编号A+ ...
- uva 1048 最短路的建图 (巧,精品)
大白书 P341这题说的是给了NT种飞机票,给了价钱和整个途径,给了nI条要旅游的路线.使用飞机票都必须从头第一站开始坐,可以再这个路径上的任何一点下飞机一但下飞机了就不能再上飞机,只能重新买票,对于 ...
- uva 10917 最短路+dp
https://vjudge.net/problem/UVA-10917 给出N点M边的无向图,没重边.对于点A,B,当且仅当从B到终点的最短路小于任何一条从A到终点的最短路时,才考虑从A走到B,否则 ...
- UVA - 12295 最短路(迪杰斯特拉)——求按对称路线最短路条数
题意: 给你一个n,然后给你一个n*n的正方形w[i][j],你需要找到一个从(1,1)点走到(n,n)点的最短路径数量.而且这个路径必须按照y=x对称 题解: 我们把左上角的点当作(0,0)点,右下 ...
- UVA 10269 Adventure of Super Mario
看了这里 http://blog.csdn.net/acm_cxlove/article/details/8679230的分析之后自己又按照自己的模板写了一遍,算是对spfa又加深了一步认识(以前真是 ...
- UVA - 658 最短路
思路:通过前后两种状态建立一条边,利用Dijsktra就可以做了. 注意利用二进制优化. AC代码 #include <cstdio> #include <cmath> #in ...
- UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
题意:有A个村庄,B个城市,m条边,从起点到终点,找一条最短路径.但是,有一种工具可以使人不费力的移动L个长度,但始末点必须是城市或村庄.这种工具有k个,每个只能使用一次,并且在城市内部不可使用,但在 ...
随机推荐
- 20150309--gridview
GridView: 使用代码套用模板,变为DataList的样式,添加<asp:TemplateField>标签,(注意必须加上<Columns>) <asp:GridV ...
- linux 内核和应用程序区别
应用程序存在于虚拟内存中, 有一个非常大的堆栈区. 堆栈, 当然, 是用来保存函数调用历史以及所有的由当前活跃的函数创建的自动变量. 内核, 相反, 有一个非常小的堆栈; 它可能小到一个, 4096 ...
- Php 与 Json
PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json, ...
- POJ 1285 确定比赛名次
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- Java中String类型的不可变性和驻留池
一 基本概念 可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当获得这个类的一个实例引用时,可以改变这个实例的内容. 不可变类:不可变类的实例一但创 ...
- PHP 函数extension_loaded();
extension_loaded — 检查一个扩展是否已经加载 例如: <?php if (!extension_loaded('gd')) { if (!dl('gd.so')) { exit ...
- 打造简单实用的Thinkphp分页样式(Bootstrap版本)
先吐槽一下ThinkPHP3.1版的分页样式,虽然看起来也很简单大方,但是所有的页码全是使用简单的数字,之间的空隙比较小,不大容易点,还有那个“前5页”和“后5页”显得有点多余,因为点击当前显示第一页 ...
- 转:java中volatile关键字的含义
转:java中volatile关键字的含义 在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...
- ERP基本功——物料的四个量
ERP基本功——物料的四个量 在分析制造业管理问题的时候,如果能借用一些ERP里才会用到的概念,就会非常的简单,并且条理清晰. 我觉得柳中冈先生一再强调的一个观点非常有用,大意是这样的:任何人依据现有 ...
- Sql 临时表
一个#是只能在当前打开滴查询窗体查询,两个#是能够在其他打开滴查询窗体查询 SELECT 'VR001839003YP' 列名1,'RO512498726DE' 列名2 INTO #临时表 UNION ...