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. 【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取

    在入门系列的教程中.我们经常使用 d3.json() 函数来读取 json 格式的文件.json 格式非常强大.但对于普通用户可能不太适合,普通用户更喜欢的是用 Microsoft Excel 或 O ...

  2. ICONFONT在APP中的使用

    阿里IconFont平台 http://www.iconfont.cn/ 这里是阿里巴巴UED部门开发的IconFont平台,眼下阿里系的重量级产品都在使用,里面有非常多资源可供使用. 这里说说怎样在 ...

  3. SonarQube---在具体项目中的使用

    一.简介 SonarQube(简称Sonar)是管理代码质量的开放平台,它可以快速地对代码质量进行分析,并给出合理的解决方案,提高管理效率,保证代码质量. Sonar官网,文档 Sonar Scann ...

  4. NYOJ 158 省赛来了

    省赛来了 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 一年一度的河南省程序设计大赛又要来了. 竞赛是要组队的,组队形式:三人为一队,设队长一名.队员两名. 如今问题 ...

  5. 使用python在极坐标中生成一条直线

    在测试雷达时,往往需要测试雷达的数据是否准确,这时就需要在雷达图中显示一条标准的直线作为对比. "create a wall" import numpy as np import ...

  6. 解决CentOS java环境不生效的问题

    查看当前java版本 [root@localhost jdk1.6.0_45]# java -version openjdk version "1.8.0_65" OpenJDK ...

  7. 针对OpenSSL吐嘈的吐嘈-如此唱反调

    前些天写了一篇<令人作呕的OpenSSL>,顿时引来了大量的恶评.令我非常尴尬,同一时候也认为悲哀. 假设说you can you up之类的,我认为起码这人看出了我的本意,仅仅是怀疑我的 ...

  8. netstat --numeric-ports -a -t -p 排查hadoop主从节点是否建立通信

    tcp  通信 [root@hadoop2 logs]# netstat --numeric-ports -a -tActive Internet connections (servers and e ...

  9. 转:目前为止最全的微信小程序项目实例

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  10. HDU1151 Air Raid —— 最小路径覆盖

    题目链接:https://vjudge.net/problem/HDU-1151 Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory L ...