TZOJ 3692: 紧急援救 最短路/dijstra
描述
人质被恐怖分子扣押,幸好警察已经在一些路口准备好警车随时出动,救援马上开始...
zzzz,稍安勿躁,警察需要以最少的时间到达案发现场,那应该出动哪辆警车呢?这辆警车最快需要多少时间能够到达现场呢?又幸好警方最近聘请了一位编程高手,那就是你,现在请你马上编写程序来实现。
输入
输入数据的第一行为3个整数n(n<=1000)、m(m<=10000)和s,其中n表示路口的数目,分别从1到n进行编号,m表示马路的条数,s表示案发次数。
接下来有m行,每行表示一条马路信息,每条马路信息包含起点s(路口编号)、终点e(路口编号)以及从s到e所需要的时间t,其中1<=s,e<=n,t为一个非负实数。
接下来包含s个案件,每个案件有两行,第一行为两个正整数c和k,c表示案发现场(路口编号),k表示警车的数目,第二行有k个正整数,每个正整数对应一个警车所在的路口编号。
输出
对每个案件,第一行输出:
Scenario x:
其中x表示案件的编号,从1开始。
第二行输出最快到达的时间,保留2位小数,如果无法到达则输出:
Impossible.
每个案件之后再输一个空行。
样例输入
6 9 2
1 2 3.5
1 3 1.2
3 4 4.9
2 4 0.221
5 4 0.1
5 6 1.3
4 6 1
2 3 0
3 2 5
4 2
1 3
5 1
6
样例输出
Scenario 1:
3.72
Scenario 2:
Impossible.
题目的意思就是先给定n个点及m条路的路径长度,然后有s个案件,对于每个案件的现场c都有k辆警车在附近候着,问你这k辆警车谁能最快到达现场c,算是多源最短路?;然后一开始写了个返回值的dijstra,但是太混乱了,最后参考了一下别人的代码写了个无返回值的,更接近bfs,也算是更熟悉,多一种参考
#include<bits/stdc++.h> using namespace std; int n,m,s,c,k; int vis[1001]; double dis[1001],ma[1001][1001]; const int inf = 1e9+10; void dijstra(int st) { int pos=1,mi,sum=0; memset(vis,0,sizeof(vis)); //memset(dis,inf,sizeof(dis)); for(int i=1;i<=n;i++)dis[i] = ma[st][i]; vis[st] = 1; dis[st] = 0; //int T = n; for(int i=1;i<=n;i++) { mi = inf; for(int j=1;j<=n;j++) { if(vis[j]==0&&mi>dis[j]) { mi = dis[j]; pos = j; } } if(mi==inf)break; vis[pos] = 1; for(int j=1;j<=n;j++) { if(vis[j]==0&&dis[j]>dis[pos]+ma[pos][j]) dis[j] = dis[pos]+ma[pos][j]; } } } int main() { cin>>n>>m>>s; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) ma[i][j] = inf; for(int i=1;i<=m;i++) { int a,b; double t; cin>>a>>b>>t; if(ma[a][b]>t) ma[a][b] = t; } for(int i=1;i<=s;i++) { cin>>c>>k; double minn = inf; for(int j=1;j<=k;j++) { int star; cin>>star; dijstra(star); if(dis[c]<minn) minn = dis[c]; } if(minn!=inf)printf("Scenario %d:\n%.2f\n\n",i,minn); else printf("Scenario %d:\nImpossible.\n\n",i); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!