博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AC日记——灾后重建 洛谷 P1119
阅读量:6997 次
发布时间:2019-06-27

本文共 877 字,大约阅读时间需要 2 分钟。

 

思路:

  看到n<=200,思考弗洛伊德算法;

  如何floyed呢?

  floyed是一种动态规划求最短路的算法;

  它通过枚举中间点来更新两点之间最短路;

  回到这个题本身;

  所有点的重建完成的时间和询问的时间都已经排好序了;

  所以,我们把floyed拆开;

  对于一个三维的k,i,j的floyed算法;

  我们判断当前的询问在哪两个相邻的k之间;

  然后,我们判断当时的连通性以及最短路情况;

 

来,上代码:

#include 
#include
#include
#include
using namespace std;#define INF 0x7ffffffint n,m,f[205][205][205],ti[205];inline void in(int &now){ char Cget=getchar();now=0; while(Cget>'9'||Cget<'0') Cget=getchar(); while(Cget>='0'&&Cget<='9') { now=now*10+Cget-'0'; Cget=getchar(); }}int main(){ in(n),in(m); for(int k=0;k<=n+2;k++) { for(int i=0;i
w||ti[v]>w) { printf("-1\n"); continue; } while(ti[tot]<=w&&tot

 

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6748240.html

你可能感兴趣的文章