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 ...
随机推荐
- Linux VPS/server上用Crontab来实现VPS自己主动化
VPS或者server上常常会须要VPS或者server上常常会须要定时备份数据.定时运行重新启动某个服务或定时运行某个程序等等,一般在Linux使用Crontab,Windows以下是用计划任务(W ...
- How to Use SFTP ?
Usage Build a SFTP session with your linux like server, e.g, by the tool "Xshell" or any y ...
- 关于 iOS 的 StoryBoard,接受的那一刻才发现她的美 - 当然美的事物都须要业心照料
关于 iOS 的 StoryBoard,接受的那一刻才发现她的美 - 当然美的事物都须要业心照料 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循&quo ...
- 连接sql2008时报错
最近把公司的项目搭建到本地(周末回家要加班),可是连接后,发现程序后台出错,错误信息:不支持此服务器版本.目标服务器必须是 SQL Server 2000 或更高版本. 本地是SqlServer200 ...
- struts2多图片上传实例【转】
原文地址:http://blog.csdn.net/java_cxrs/article/details/6004144 描述: 通过struts2实现多图片上传. 我使用的版本是2.2.1,使用的包有 ...
- 【bzoj4320】ShangHai2006 Homework
若Y小于等于sqrt(300000),暴力,对所有的插入的数都更新mn[i]. 若Y大于sqrt(300000),枚举kY,用并查集维护>=i的第一个数,这样只支持删除操作是O(1),然后倒着枚 ...
- Java 解析excel2003和2007区别和兼容性问题(POI操作)
最近在使用POI对excel操作中发现一些问题,2003和2007的区别还是蛮大的: 2007相关的包: poi-3.9.jar poi-examples-3.8.jar poi-excelant-3 ...
- grails Domian对象转JSON去class以及自己定义字段的最佳方式
grails:2.4.x IDE:Intellij IDEA 13.x grails的Domain对象之间假设存在环形引用.直接使用as JSON仅仅会输出关联对象的id.而且假设使用deep也会报错 ...
- mongodb07---用户权限
用户管理: 注意: 添加用户后,我们再次退出并登陆,发现依然可以直接读数据库? 原因: mongodb服务器启动时, 默认不是需要认证的. 要让用户生效, 需要启动服务器时,就指定 --auth 选项 ...
- YTU 2892: I--免费看电影
2892: I--免费看电影 时间限制: 1 Sec 内存限制: 128 MB 提交: 30 解决: 12 题目描述 万象城星美影院开业1周年了,要举行为期一天的大酬宾,ACM队员准备去看电影.已 ...