2016东莞市特长生考试 村庄重建
来源:互联网 发布:降龙九九软件安装 编辑:程序博客网 时间:2024/04/28 16:25
2016东莞市特长生考试 村庄重建
Description
B 地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,只能到达重建完成的村庄。
给出 B 地区的村庄数 N,村庄编号从 0 到 N-1,和所有 M 条公路的长度,公路是双向的。并给出第 i 个村庄重建完成的时间 t[i],你可以认为是同时开始重建并在第 t[i]天重建完成,并且在当天即可通车。若 t[i]为 0 则说明地震未对此地区造成损坏,一开始就可以通车。之后有 Q 个询问(x, y, t),对于每个询问你要回答在第 t 天,从村庄 x 到村庄 y 的最短路径长度为多少。如果无法找到从 x 村庄到 y 村庄的路径,经过若干个已重建完成的村庄,或者村庄 x 或村庄 y 在第 t 天仍未重建完成 ,则需要返回-1。
Input
输入文件 rebuild.in 的第一行包含两个正整数 N,M,表示了村庄的数目与公路的条数。
第二行包含 N 个非负整数 t[0], t[1], „, t[N – 1],表示了每个村庄重建完成的时间,数据保证了 t[0] ≤ t[1] ≤ „ ≤ t[N – 1]。
接下来 M 行,每行 3 个非负整数 i, j, w,w 为不超过 10000 的正整数,表示了有一条连接村庄 i 与村庄 j 的道路,长度为 w,保证 i≠j,且对于任意一对村庄只会存在一条道路。
接下来一行也就是 M+3 行包含一个正整数 Q,表示 Q 个询问。
接下来 Q 行,每行 3 个非负整数 x, y, t,询问在第 t 天,从村庄 x 到村庄 y 的
最短路径长度为多少,数据保证了 t 是不下降的。
Output
输出文件 rebuild.out 包含 Q 行,对每一个询问(x, y, t)输出对应的答案,即在第 t 天,从村庄 x 到村庄 y 的最短路径长度为多少。如果在第 t 天无法找到从 x 村庄到 y 村庄的路径,经过若干个已重建完成的村庄,或者村庄 x 或村庄 y
在第 t 天仍未修复完成,则输出-1。
分析:对于每一次询问t,我们把t之前重建好的村庄做一次最短路即可。
代码
const
maxn=200;
var
a:array[0..maxn,0..maxn] of longint;
t:array[0..maxn] of longint;
i,j,k,n,m,x,y,z,p,q,o,v:longint;
begin
readln(n,m);
for i:=0 to n do
for j:=0 to n do
a[i,j]:=maxlongint div 2;
for i:=0 to n-1 do
read(t[i]);
for i:=1 to m do
begin
read(j,k,p);
a[j,k]:=p;
a[k,j]:=p;
end;
readln(q);
for k:=1 to q do
begin
readln(x,y,z);
while (o<n) and (t[o]<=z) do inc(o);
while v<o do
begin
for i:=0 to n-1 do
for j:=0 to n-1 do
if a[i,v]+a[v,j]<a[i,j]
then a[i,j]:=a[i,v]+a[v,j];
inc(v);
end;
if (x>=o) or (y>=o) or (a[x,y]=maxlongint div 2)
then writeln(-1) else writeln(a[x,y]);
end;
end.
- 2016东莞市特长生考试 村庄重建
- 2016东莞市特长生考试 村庄重建
- SSL P2643 2016东莞市特长生考试 村庄重建
- 2016东莞市特长生考试 子数整数
- 2016东莞市特长生考试 游戏问题
- 2016东莞市特长生考试 字串距离(dp)
- 2016东莞市特长生考试 子数整数
- 2016东莞市特长生考试 游戏问题
- 2016东莞市特长生考试 字串距离
- 2641 2016东莞市特长生考试 游戏问题
- 2642 2016东莞市特长生考试 字串距离
- 2016东莞市特长生考试 字串距离
- SSL P2640 2016东莞市特长生考试 子数整数
- 2640 2016东莞市特长生考试 子数整数
- 2016 东莞信息特长生考试 1 子数整数
- 东莞市2011年信息学特长生测试题 工具软件
- 考试题目——雪后村庄
- 东莞市2011年信息学特长生测试题 花店布置(dp)
- 跨程序共享数据——内容提供器
- [NLP][Python]基于keras和LSTM的文本生成
- 逻辑运算符的短路特性
- 修改mysql提示符
- poj 1160 Post Office (四边形不等式优化DP)
- 2016东莞市特长生考试 村庄重建
- alogithm之remove()函数 std::remove()
- 【jzoj5050】【颜色树】【容斥原理】【树形动态规划】
- Mac系统下配置php
- HDU 5857
- js日常小笔记
- HDU 1541+poj 2352 stars
- Git Bash 不能输入中文的简单解决办法
- 遇见问题记录-oracle表,行死锁