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变形)的更多相关文章

  1. UVA10048 Audiophobia[Floyd变形]

    UVA - 10048 Audiophobia Consider yourself lucky! Consider yourself lucky to be still breathing and h ...

  2. POJ2253——Frogger(Floyd变形)

    Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...

  3. hdu 1596(Floyd 变形)

    http://acm.hdu.edu.cn/showproblem.php?pid=1596 find the safest road Time Limit: 10000/5000 MS (Java/ ...

  4. hdu 1217 (Floyd变形)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others)   ...

  5. UVa 10048 (Floyd变形) Audiophobia

    题意: 给一个带权无向图,和一些询问,每次询问两个点之间最大权的最小路径. 分析: 紫书上的题解是错误的,应该是把原算法中的加号变成max即可.但推理过程还是类似的,如果理解了Floyd算法的话,这个 ...

  6. HDU3631:Shortest Path(Floyd)

    Problem Description When YY was a boy and LMY was a girl, they trained for NOI (National Olympiad in ...

  7. HDU 4034 Graph(Floyd变形——逆向判断)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4034 Problem Description Everyone knows how to calcu ...

  8. UVa 10048 - Audiophobia(Floyd变形)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. HDU - 3631 Shortest Path(Floyd最短路)

    Shortest Path Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u SubmitStat ...

随机推荐

  1. Find Minimum in Rotated Sorted Array 旋转数组中找最小值 @LeetCode

    O(n)的算法就不说了,这题主要考查的是 O(logn)的算法. 有序数组easy想到使用二分查找解决.这题就是在二分基础上做一些调整.数组仅仅有一次翻转,能够知道原有序递增数组被分成两部分,这俩部分 ...

  2. mysql查看所有存储过程,函数,视图,触发器,表,分页

    查询数据库中的存储过程和函数 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' ...

  3. TinyXml 与 Rapidxml效率对照

    曾经在做开发中一直使用TinyXml,在网上搜索说Rapidxml的效率比tinyXml高.个人比較喜欢追求效率.所以忍不住尝试性使用Rapidxml. RapidXml 的官方站点例如以下: htt ...

  4. 硬件开发之bt输出---BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明

    http://blog.csdn.net/zhouzhuan2008/article/details/17168133

  5. 【iOS系列】-使用CAGradientLayer设置渐变色

    有时候iOS开发中需要使用到渐变色,来给图片或者view盖上一层,使其显示效果更好,我们这里使用的CAGradientLayer来设置渐变色 要实现的效果如下: Demo地址---下载 // 创建渐变 ...

  6. TF-IDF与余弦类似性的应用(一):自己主动提取关键词

    作者: 阮一峰 日期: 2013年3月15日 原文链接:http://www.ruanyifeng.com/blog/2013/03/tf-idf.html 这个标题看上去好像非常复杂,事实上我要谈的 ...

  7. NYOJ1026 阶乘末尾非0 【模板】

    阶乘末尾非0 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描写叙述 我们的问题非常是简单.n! 末尾非0数是几? 比方n=5的时候,n! =120,那么n!末尾非0数是2. ...

  8. 省市区三级-sql脚本:

    /*Navicat MySQL Data Transfer Source Server : moiraiSource Server Version : 50631Source Host : 192.1 ...

  9. HDU2389 Rain on your Parade —— 二分图最大匹配 HK算法

    题目链接:https://vjudge.net/problem/HDU-2389 Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)  ...

  10. 并不对劲的bzoj4197:loj2131:uoj129:p2150:[NOI2015]寿司晚宴

    题目大意 有两个集合\(S_1,S_2 \subseteq [2,n] (n\leq 500)\),且对于\(\forall x\in S_1,y\in S_2 , gcd(x,y)=1\) 求\(S ...