NYOJ 115 城市平乱
城市平乱
- 描述
-
南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。
他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。
现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。
现在已知在任意两个城市之间的路行军所需的时间,你作为南将军麾下最厉害的程序员,请你编写一个程序来告诉南将军第一个分队到达叛乱城市所需的时间。
注意,两个城市之间可能不只一条路。
- 输入
-
第一行输入一个整数T,表示测试数据的组数。(T<20)
每组测试数据的第一行是四个整数N,M,P,Q(1<=N<=100,N<=M<=1000,M-1<=P<=100000)其中N表示部队数,M表示城市数,P表示城市之间的路的条数,Q表示发生暴乱的城市编号。
随后的一行是N个整数,表示部队所在城市的编号。
再之后的P行,每行有三个正整数,a,b,t(1<=a,b<=M,1<=t<=100),表示a,b之间的路如果行军需要用时为t数据保证暴乱的城市是可达的。
- 输出
- 对于每组测试数据,输出第一支部队到达叛乱城市时的时间。每组输出占一行
- 样例输入
-
1 3 8 9 8 1 2 3 1 2 1 2 3 2 1 4 2 2 5 3 3 6 2 4 7 1 5 7 3 5 8 2 6 8 2
- 样例输出
-
4
-
应用Dijkstra算法求解!
-
AC码:
-
#include<stdio.h> #include<string.h> #define INF 999999999 int G[1010][1010],visit[1010],dist[1010]; int main() {int T,n,m,p,q,a,b,t,min,i,j,k;int army[105];scanf("%d",&T);while(T--){scanf("%d%d%d%d",&n,&m,&p,&q);// 输入军队所在的顶点for(i=0;i<n;i++)scanf("%d",&army[i]);// 初始化邻接矩阵for(i=0;i<=m;i++){for(j=0;j<=m;j++)G[i][j]=INF;}// 输入可行的路径及所需时间for(i=0;i<p;i++){scanf("%d%d%d",&a,&b,&t);G[a][b]=G[b][a]=t; // 创建邻接矩阵}// Dijkstra算法求出源点q到其他各个顶点的最短路径长度memset(visit,0,sizeof(visit));for(i=1;i<=m;i++)dist[i]=G[q][i]; // 初始化distvisit[q]=1;for(i=1;i<=m;i++){min=INF;for(j=1;j<=m;j++){if(!visit[j]&&min>dist[j]){min=dist[j];k=j;}}visit[k]=1;if(min==INF)break;for(j=1;j<=m;j++){if(!visit[j]&&dist[j]>min+G[k][j])dist[j]=min+G[k][j];}}// 找出军队所在顶点到源点的最小时间min=INF;for(i=0;i<n;i++){if(min>dist[army[i]])min=dist[army[i]];}printf("%d\n",min);}return 0; }
NYOJ 115 城市平乱相关推荐
- NYOJ 115 城市平乱(图论Dijkstra)
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...
- NYOJ 115 城市平乱
描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...
- 图论南阳155题 城市平乱
思路:刚开始用了佛洛伊德算法,没想到超时了.后来改用多次迪杰斯特算法就过了. 迪杰斯特算法是求出源点到其余点的最短距离 这里是求出队伍到危险去的距离然后找出最小的那个然后输出就ok了,注意他说两个城市 ...
- 城市平乱 (dijkstra模板题)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个"超级源 ...
- 前端剑法第五式————平乱
清溪牧者宿云田,忽梦村林鸡鸣起, 佳影轩窗,心思潸然起 马嘶人吼惊怒起,何人? 一剑平乱四下寂 纵马疾行,少年意气志天涯 今日学习内容 目录 文档流(normal flow) 盒子模型 1:内容区(c ...
- windows中如何将已安装的nodejs高版本降级为低版本
第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗 ...
- python中readlines函数用法,python中read() readline()以及readlines()用法
我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...
- python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...
对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...
- 全国主要城市经纬度表
[北京,39.90555,116.39147];[朝阳,39.95,116.4833];[丰台,39.8667,116.25];[石景山,39.9333,116.1833];[海淀,39.9833,1 ...
最新文章
- ubuntu远程登陆windows
- python selenium webdriver_Python:selenium.webdriver问题(服务器上没有X)
- Kubernetes 容器编排
- [转载]使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)...
- 织梦文章添加字段填栏目id,内容页调用字段里的栏目文章
- shell例题3-百度面试题
- 数组实例的find() 和 findIndex()方法
- TAOCP-1.2.10_求极大值
- 从应届技术男到百度VP,这是低调到没百科的吴海锋首次受访
- 陈桂林个人博客传送门
- 2018-05-21 Linux学习
- OpenHarmony啃论文俱乐部玩法攻略
- 手把手教学 玩转苹果HomeKit
- vue手机端打开高德地图app
- 【渝粤教育】国家开放大学2018年春季 0553-21T色彩 参考试题
- 女性养生最需要的十种食物
- HTML+CSS_第四部分(Sass与Less、PostCSS、CSS架构与文件组织、CSS新特征)
- python图像处理(十)——图像仿射变换、图像透视变换和图像校正
- 【0002】JDK1.7安装和环境变量配置(Windows7操作系统)
- 世纪互联运营的office365登陆手机Outlook