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 ...
随机推荐
- redux-saga 异步流
前言 React的作用View层次的前端框架,自然少不了很多中间件(Redux Middleware)做数据处理, 而redux-saga就是其中之一,目前这个中间件在网上的资料还是比较少,估计应用的 ...
- Highcharts:X轴分组堆叠图
在设计一个项目中的数据展示页面时.想要设计双X轴,一个轴显示须要的项.一个轴对这些项进行分组.效果如图: Highcharts自带双X轴展示方式.可是效果不是太理想.调整起来也会麻烦些 看到Highc ...
- Android:内存控制及OOM处理
1. OOM(内存溢出)和Memory Leak(内存泄露)有什么关系? OOM可能是因为Memory Leak,也可能是你的应用本身就比较耗内存(比如图片浏览型的).所以,出现OOM不一定是Me ...
- 嵌入式开发之davinci--- 8148 小站信息
http://zhan.renren.com/tag?value=dm8148#!//more/3602888498051423017 http://zhan.renren.com/dm8148evm ...
- 如何使用jQuery向asp.net Mvc传递复杂json数据
jQuery提供的ajax方法能很方便的实现客户端与服务器的异步交互,在asp.net mvc 框架使用jQuery能很方便地异步获取提交数据,给用户提供更好的体验! 调用jQuery的ajax方法时 ...
- 使用OnScrollListener回调处理自己主动载入很多其它
首先来分析下OnScrollListener的回调. new OnScrollListener() { boolean isLastRow = false; @Override public void ...
- [办公自动化]企业网IE多版本引发的网页无法访问
今天同事的某个网页无法打开,但是在我的计算机上该网站确实又能打开. 去看了一下,他的其他网站都正常.确认网络本身没有问题. 最后,看了一下IE版本,IE11. 只好尝试一下兼容性视图的设置. 设置了一 ...
- C项目实践--家庭财务管理系统
1.功能需求分析 家庭财务管理系统给家庭成员提供了一个管理家庭财务的平台,系统可以对家庭成员的收入和支出进行增加,删除.修改和查询等操作,并能统计总收入和总支出.其主要功能需求描述如下: (1)系统主 ...
- RK3288-OTA编译失败解决办法【转】
本文转载自:http://blog.csdn.net/wangxueming/article/details/52448630 在执行make otapackage的时候出现该错误,是由于drmsi ...
- 并不对劲的bzoj4012:loj2116:p3241: [HNOI2015]开店
题目大意 有一棵\(n\)(\(n\leq1.5*10^5\))个节点的二叉树,有点权\(x\),边权\(w\),\(q\)(\(q\leq2*10^5\))组询问,每组询问给出\(u,l,r\),求 ...