【2011.12.31普及模拟】逃离洞穴(escape) //2018.1.25
2018-01-27 18:28
204 查看
题目
小Z最近出去旅游,遇上倒霉事了。他和旅游团一起去游洞穴。这里有n个洞穴,编号为1到n。它们之间,有的有双向的小路相连,有的却没有,不过所有洞穴都通过小路连在了一起,没有任何两个洞穴不能相互到达。当游客们分散在各处的时候,忽然出了些故障,所有灯全部熄灭。这时广播响起,要求游客们迅速疏散。有两个洞穴是出口,分别编号1和n,每个游客都选择最短的路线,从某一个出口逃离。所有的小路都是有长度的,而所有游客的速度都认为是1。
现在请问,在给定的T时间内,最多有多少人可以逃离。另一个问题,最慢的游客离开需要多少时间。
输入
第一行,三个整数,n,m和T,分别表示洞穴的数目,小路的数量和给定的逃离时间。
接下来m行,每行三个整数x,y和L,表示这条小路连接了编号为x和y的洞穴,而它的长度为L。x和y互不相同,且都在1到n之间。任何两个洞穴之间最多只有一条小路将它们直接相连。
下一行,一个整数k,表示游客的数量。
最后一行,k个整数,每个都在1到n之间,表示每个游客所在的洞穴(可能一个洞穴会有多个人)。
输出
输出两行,每行一个整数。第一行输出T时间内多少人可以逃离,第二行输出最慢的游客逃离洞穴所需要的时间。
题目大意
一个双向图,1和n是出口,各个(顶点)洞穴(有距离)有游客(速度为1),问在T时间内有多少个游客能逃离,并且求出最慢的乘客需要的时间。
解题思路
最短路径(Floyd算法)代码
#include<cstdio> #include<iostream> using namespace std; int n,m,t,k,a[501],c[501][501],ans,maa; const int inf=99999999; int main() { freopen("escape.in","r",stdin); freopen("escape.out","w",stdout); scanf("%d%d%d",&n,&m,&t); int x,y; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) c[i][j]=inf; //初始化 for (int i=1;i<=m;i++) { scanf("%d%d",&x,&y); scanf("%d",&c[x][y]); c[y][x]=c[x][y];//读入 } scanf("%d",&k); for (int i=1;i<=k;i++) { scanf("%d",&x); a[x]++; } ans=ans+a[1]+a ; for (int g=1;g<=n-1;g++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (c[i][g]!=inf&&c[g][j]!=inf) c[i][j]=min(c[i][j],c[i][g]+c[g][j]);//求最短路径 for (int i=2;i<=n-1;i++) { int qw=min(c[i][1],c[i] ); if (qw<=t) ans=ans+a[i]; //记录限定时间内,最多游客 if (qw>maa&&a[i]) maa=qw; //记录最慢的游客的时间 } printf("%d\n%d",ans,maa);//输出 return 0; }
相关文章推荐
- JZOJ 1360. 【2011.12.31普及模拟】逃离洞穴(escape)
- jzoj 1360. 【2011.12.31普及模拟】逃离洞穴
- 【2011.12.31普及模拟】堆箱子(boxes)//2018.1.25
- JZOJ 1362. 【2011.12.31普及模拟】堆箱子(boxes)
- NOIP 2007 普及组 复赛 escape 守望者的逃离
- 逃离洞穴(escape)
- JZOJ 1361. 【2011.12.31普及模拟】抓捕嫌疑犯(suspect)
- 普及练习场之简单的模拟
- jzoj 1898. 【2014.8.17NOIP普及组模拟】数池塘
- 2016.08.19上午【初中部 NOIP普及组 】模拟赛题解
- 【2016普及组模拟考试】04 搜索 tribe(部落卫队)
- 2016.09.10【初中部 NOIP普及组 】模拟赛题解
- 2016.09.10 初中部 NOIP普及组 模拟赛
- hdu 2364 Escape【模拟优先队列】【bfs】
- JZOJ__Day 10:【普及模拟】【USACO】横幅
- 普及练习场 BOSS战-普及综合练习2 守望者的逃离
- 2069. 【2016.10.5NOIP普及模拟】wd的假日
- 【2016.10.6NOIP普及模拟】Pond
- 【2016.10.7NOIP普及模拟】找试场
- C. 【NOIP2018普及级别模拟】前缀转后缀