zoukankan      html  css  js  c++  java
  • 灾后重建

    【题目描述】

    地震过后,所有的村庄都有一定的损毁,但公路依旧正常。在村庄重建好之前,所有与未重建完成村庄相连的公路均无法通车。

    给定村庄数N以及M条公路的长度,村庄从0~N-1编号,公路是双向的,并给定第i个村庄重建完成的时间Ti,可以认为村庄是同时开始重建的并在第Ti天重建完成,且在当天即可通车。若Ti为0,则此村庄一开始就可以通车。

    现有Q个询问,对于每个询问,需要输出在第t天,从村庄x到村庄y的最短路径长度为多少,如果无法找到从x村庄到y村庄的路径,或者村庄x或村庄y在第t天仍未重建完成,则输出-1。

    【输入描述】

    第一行输入两个正整数N、M,表示村庄的数目与公路的数目;

    第二行输入N个非负整数T0、T1、······、TN–1,表示每个村庄重建完成的时间(T0 ≤ T1 ≤ ······ ≤ TN–1);

    接下来M行,每行输入三个非负整数i、j、w,w为不超过10000的正整数,表示存在一条长度为w、连接村庄i和村庄j的道路(i ≠ j),数据保证对于任意一对村庄只存在一条道路;

    第M+3行输入一个正整数Q,表示询问的数目;

    接下来Q行,每行输入三个非负整数x、y、t,表示在第t天,询问从村庄x到村庄y的最短路径长度为多少,数据保证t不降。

    【输出描述】

    输出Q行,对于每一个询问输出一个数,表示答案,否则输出-1。

    【样例输入】

    4 5

    1 2 3 4

    0 2 1

    2 3 1

    3 1 2

    2 1 4

    0 3 5

    4

    2 0 2

    0 1 2

    0 1 3

    0 1 4

    【样例输出】

    -1

    -1

    5

    4

    【数据范围及提示】

    对于30%的数据,N ≤ 50;

    对于30%的数据,Ti = 0;

    对于50%的数据,Q ≤ 100;

    对于100%的数据,N ≤ 200,M ≤ N*(N-1)/2,Q ≤ 50000。

  • 相关阅读:
    SVN Monitor工具推荐
    Linux Netbeans汉化不全
    PMWiki安装教程
    JIRA重启服务器后需要重启TOMCAT的解决
    SVN分支与合并
    WCF无法捕获FaultException
    非完美C++ Singleton实现[转载]
    C语言结构体的对齐原则
    C++ STL 学习笔记
    字符串笔试题
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5952770.html
Copyright © 2011-2022 走看看