洛谷 [P1119] 灾后重建
我们发现每次询问都是对于任意两点的,所以这是一道多源最短路径的题,多源最短路径,我们首先想到floyd,因为询问的时间是不降的,所以对于每次询问,我们将还没有进行松弛操作的的点k操作。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN=205;
int init(){
	int rv=0,fh=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-') fh=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		rv=(rv<<1)+(rv<<3)+c-'0';
		c=getchar();
	}
	return rv*fh;
}
int dis[MAXN][MAXN],n,m,t[MAXN],q,p;
inline void floyd(int k){
	for(register int i=1;i<=n;i++){
		for(register int j=1;j<=n;j++){
			dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
		}
	}
}
int main(){
	freopen("in.txt","r",stdin);
	n=init();m=init();
	for(int i=1;i<=n;i++){
		t[i]=init();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			dis[i][j]=0x7fffffff/3;
		}
		dis[i][i]=0;
	}
	for(int i=1;i<=m;i++){
		int u=init(),v=init(),di=init();
		dis[u+1][v+1]=di;dis[v+1][u+1]=di;
	}
	q=init();
	for(int i=1;i<=q;i++){
		int x=init(),y=init(),ti=init();
		x++;y++;
		if(t[x]>ti||t[y]>ti) {printf("-1\n");continue;}
		while(t[p+1]<=ti&&(p<=n-1)) floyd(++p);
		if(dis[x][y]==0x7fffffff/3) printf("-1\n");
		else printf("%d\n",dis[x][y]);
	}
	fclose(stdin);
	return 0;
}
洛谷 [P1119] 灾后重建的更多相关文章
- 洛谷——P1119 灾后重建
		P1119 灾后重建 题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重 ... 
- 洛谷 P1119 灾后重建 最短路+Floyd算法
		目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1119 灾后重建 题目描述 B地区在地震过后,所有村 ... 
- 洛谷 P1119 灾后重建——dijstra
		先上一波题目 https://www.luogu.org/problem/P1119 这道题我们可以将询问按时间排序 然后随着询问将相应已经重建成功的点进行操作 每次更新一个点就以他为起点跑一遍dij ... 
- 洛谷P1119 灾后重建[Floyd]
		题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ... 
- 洛谷P1119 灾后重建 Floyd + 离线
		https://www.luogu.org/problemnew/show/P1119 真是有故事的一题呢 半年前在宁夏做过一道类似的题,当时因为我的愚昧痛失了金牌. 要是现在去肯定稳稳的过,真是生不 ... 
- 洛谷P1119灾后重建——Floyd
		题目:https://www.luogu.org/problemnew/show/P1119 N很小,考虑用Floyd: 因为t已经排好序,所以逐个加点,Floyd更新即可: 这也给我们一个启发,如果 ... 
- 洛谷 P1119 灾后重建(Floyd)
		嗯... 题目链接:https://www.luogu.org/problem/P1119 这道题是一个Floyd的很好的题目,在Floyd的基础上加一点优化: 中转点k在这里不能暴力枚举,否则会超时 ... 
- 洛谷P1119灾后重建
		题目 做一个替我们首先要明确一下数据范围,n<=200,说明n^3的算法是可以过得,而且这个题很明显是一个图论题, 所以我们很容易想到这个题可以用folyd, 但是我在做这个题的时候因为没有深刻 ... 
- 洛谷P1119 灾后重建
		传送门 题目大意:点被破坏,t[i]为第i个点修好的时间,且t[1]<t[2]<t[3].. 若干询问,按时间排序,询问第t时刻,u,v的最短路径长度. 题解:floyed 根据时间加入点 ... 
随机推荐
- find the nth digit(二分查找)
			题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1597 find the nth digit Time Limit: 1000/1000 MS (Jav ... 
- linux命令 uname -r 和 uname -a 的解释与演示
			1.uname -r : 显示操作系统的发行版号2.uname -a :显示系统名.节点名称.操作系统的发行版号.内核版本等等. 系统名:Linux 节点名称: iZ2zeeailqvwws5dcui ... 
- 分布式监控系统--zabbix
			1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 2.监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/代理端/服务器端/, ... 
- [国嵌笔记][028][Bootloader设计蓝图]
			Bootloader的作用就是启动Linux内核 U-Boot简介 1.U-Boot是用于多种嵌入式CPU(ARM.x86.MIPS等)的bootloader程序,U-Boot不仅支持嵌入式Linux ... 
- Qt布局操作
			Qt界面布局是用来界面上控件排序的,例如对齐.自适应分辨率等都要用到布局. Qt界面布局跟Visual Studio系列完全不一样,VS系列的操作很简单,一般情况下,很快就能入手了,但比较死板(特别是 ... 
- 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍
			Math对象的介绍 1:Math对象 Math 对象用于执行数学任务.并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math().您无需创建它,通过把 Math 作为对象使用就 ... 
- Lucene学习笔记2-Lucene的CRUD(V7.1)
			在进行CRUD的时候请注意IndexWriterConfig的设置. public class IndexCRUD { "}; private String citys[]={"j ... 
- bat判断当前目录是否是根目录
			记录下,一遍查用. @echo offif "%~p0"=="\" (echo 在根目录) else echo 不在根目录pause 
- dedecms后台怎么添加发布软件?织梦后台软件内容管理
			使用织梦cms有很多的功能,其中有一个是在dedecms后台添加发布软件,然后在前台大家可以直接下载软件,在织梦cms后台怎么添加发布软件呢?下面是织梦软件内容管理的主要操作步骤. 使用织梦cms有很 ... 
- Shell中$X的含义
			$0 表示这个程序的执行名字,包含输入参数$n 表示这个程序的第n个参数值$* 表示这个程序的所有参数,此选项参数可超过9个.$# 表示这个程序的参数个数$$ 表示这个程序的PID(脚本运行的当 ... 
