sdut1282Find the Path (floyd变形)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1282
感觉这题就比较有意思了 ,虽说是看了别人的代码,我依旧卡了好几天,原因1.我理解错题意了 原因2.网上题解没有一个把这题说明白的,也没有解释题意的。。。
每条路径上的警察的最大值不超过K 而不是总和不超过K
容易想到用二维spfa来更新 不过k太大了
可以想一下floyd的原本思想 是dp[i][j] = dp[i][j]+dp[j][k],经过j做中转之后的最短路 也就是每两个结点 都会有N次更新
这里把更新顺序做了一下改变 以c从小到大排序 然后依次更新 也就是dp[i][j][k] 的含义为c值不超过c[i]的最短路径 这样询问的时候可以o(log2n)二分进行查询 这里直接循环的
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
#define INF 1e10
#define N 210
#define LL long long
LL dp[N][N][N];
struct node
{
LL c;
int id;
}p[N];
int ip[N];
bool cmp(node x,node y)
{
return x.c<y.c;
}
bool comp(int x,int y)
{
return p[x].c<p[y].c;
}
int main()
{
int t,i,j,n,m,u,v,w,q,k;
LL c;
cin>>t;
while(t--)
{
cin>>n>>m;
for(i = ; i <= n ; i++)
for(j = ; j <= n ;j++)
for(k = ; k <= n ;k++)
dp[i][j][k] = INF;
p[].id = ;
for(i = ; i <= n ;i++)
{
cin>>p[i].c;
ip[i] = i;
p[i].id = i;
dp[][i][i] = ;
}
sort(p+,p+n+,cmp);
for(i = ; i <= m ;i++)
{
cin>>u>>v>>w;
dp[][u+][v+] = w;
dp[][v+][u+] = w;
}
for(i = ; i <= n ;i++)
{
//v = ip[i];
v = p[i].id;
for(j = ; j <= n ;j++)
for(k = ;k <= n ;k++)
{
dp[i][j][k] = dp[i-][j][k];
dp[i][j][k] = min(dp[i-][j][v]+dp[i-][v][k],dp[i][j][k]);
}
}
cin>>q; while(q--)
{
cin>>u>>v>>c; u++,v++;
for(i = n; i >= ;i--)
if(p[i].c<=c) break;
if(dp[i][u][v]==INF)
puts("-1");
else
cout<<dp[i][u][v]<<endl;
}
puts("");
}
return ;
} /**************************************
Problem id : SDUT OJ 1282
User name : shang
Result : Wrong Answer
Take Memory : 64256K
Take Time : 230MS
Submit Time : 2014-02-19 21:37:46
**************************************/ /**************************************
Problem id : SDUT OJ 1282
User name : shang
Result : Accepted
Take Memory : 64252K
Take Time : 270MS
Submit Time : 2014-02-19 22:38:44
**************************************/
sdut1282Find the Path (floyd变形)的更多相关文章
- UVA10048 Audiophobia[Floyd变形]
UVA - 10048 Audiophobia Consider yourself lucky! Consider yourself lucky to be still breathing and h ...
- POJ2253——Frogger(Floyd变形)
Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...
- hdu 1596(Floyd 变形)
http://acm.hdu.edu.cn/showproblem.php?pid=1596 find the safest road Time Limit: 10000/5000 MS (Java/ ...
- hdu 1217 (Floyd变形)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others) ...
- UVa 10048 (Floyd变形) Audiophobia
题意: 给一个带权无向图,和一些询问,每次询问两个点之间最大权的最小路径. 分析: 紫书上的题解是错误的,应该是把原算法中的加号变成max即可.但推理过程还是类似的,如果理解了Floyd算法的话,这个 ...
- HDU3631:Shortest Path(Floyd)
Problem Description When YY was a boy and LMY was a girl, they trained for NOI (National Olympiad in ...
- HDU 4034 Graph(Floyd变形——逆向判断)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4034 Problem Description Everyone knows how to calcu ...
- UVa 10048 - Audiophobia(Floyd变形)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- HDU - 3631 Shortest Path(Floyd最短路)
Shortest Path Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u SubmitStat ...
随机推荐
- hdu 3853(数学期望入门)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 LOOPS Time Limit: 15000/5000 MS (Java/Others) ...
- Redis系列之-—Redis-cli命令总结【转】
Redis-cli命令最新总结 参考资料: http://redisdoc.com/ 或者 http://doc.redisfans.com http://redis.io/commands 一. 进 ...
- 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串
微信通过openID发送消息/后台post.get提交并接收数据 控制器:下面是post发送消息(微信不支持从前台发送数据,之前试过,报错,需要跨域,跨域的问题解决后还不行,最后发现之后后端提交 ...
- hdu4183往返经过至多每一个点一次/最大流
题意:从s到t,每一个点有f值,仅仅能从f值小的到大的.到T后回来.仅仅能从f值大的到 小的,求可行否. 往返,事实上就是俩条路过去(每一个点最多一次).所以想到流量为2,跑最大流.看是否满2,又要每 ...
- HBuilder开发App教程05-滴石和websql
滴石 介绍 滴石是用HBuilder开发的一款计划类app. 用到HBuilder,mui.nativejs以及h5一些特性. 预期 眼下仅仅开发到todolist级别, 以后计划做成日计划,月计划, ...
- 【iOS系列】-textView的非常规使用
[iOS系列]-textView的非常规使用 文本框坐标设置一点距离 //文本框,左边间距 textView.leftView = [[UIView alloc] initWithFrame:CGRe ...
- VS创建Web项目提示配置IISExpress失败
开发服务器VS2013,新建Web项目提示: 打开Web项目提示: 解决方法:控制面板,找到IISExpress,右键 选择修复,解决问题..
- 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) E.Passwords AC自动机+dp
题目链接:点这里 题意: 让你构造一个长度范围在[A,B]之间 字符串(大小写字母,数字),问你有多少种方案 需要满足条件一下: 1:构成串中至少包含一个数字,一个大写字母,一个小写字母: 2:不 ...
- Setting Up FastCGI Proxying
http://nginx.org/en/docs/beginners_guide.html
- UVALive3989 Ladies' Choice —— 稳定婚姻问题 Gale - Shapely算法
题目链接:https://vjudge.net/problem/UVALive-3989 题解: 题意:有n个男生和n个女生.每个女生对男神都有个好感度排行,同时每个男生对每个女生也有一个好感度排行. ...