城市平乱

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
描述

南将军统领着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 城市平乱相关推荐

  1. NYOJ 115 城市平乱(图论Dijkstra)

    城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别 ...

  2. NYOJ 115 城市平乱

    描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...

  3. 图论南阳155题 城市平乱

    思路:刚开始用了佛洛伊德算法,没想到超时了.后来改用多次迪杰斯特算法就过了. 迪杰斯特算法是求出源点到其余点的最短距离 这里是求出队伍到危险去的距离然后找出最小的那个然后输出就ok了,注意他说两个城市 ...

  4. 城市平乱 (dijkstra模板题)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个"超级源 ...

  5. 前端剑法第五式————平乱

    清溪牧者宿云田,忽梦村林鸡鸣起, 佳影轩窗,心思潸然起 马嘶人吼惊怒起,何人? 一剑平乱四下寂 纵马疾行,少年意气志天涯 今日学习内容 目录 文档流(normal flow) 盒子模型 1:内容区(c ...

  6. windows中如何将已安装的nodejs高版本降级为低版本

    第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗 ...

  7. python中readlines函数用法,python中read() readline()以及readlines()用法

    我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read(). ...

  8. python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...

    对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏,且不能指定特定元素.若是需要截取特定元素或是窗口超过了一屏,就只能另辟蹊径了. WebDriver.Phant ...

  9. 全国主要城市经纬度表

    [北京,39.90555,116.39147];[朝阳,39.95,116.4833];[丰台,39.8667,116.25];[石景山,39.9333,116.1833];[海淀,39.9833,1 ...

最新文章

  1. android 程序 读logo,Android端APP更换logo和名称后都需要些测试哪些内容呢?
  2. 获取各种常见形状的位图
  3. 进程、线程和上下文切换
  4. 关于Vmware下NAT模式物理机无法ping通虚拟机但是可以上网的解决方法
  5. java工程引入scala_引入ReactiveInflux:用于Scala和Java的无阻塞InfluxDB驱动程序,支持Apache Spark...
  6. 国内手机产业混乱:产业一窝蜂 企业捞快钱
  7. Visual C# 诠释常用排序算法
  8. 【C语言】判断学生成绩等级
  9. strtotime php,php strtotime函数怎么用
  10. js 快速集成开发:easyui 时间控件格式化
  11. 1090 Highest Price in Supply Chain (25 分)(模拟建树,找树的深度)牛客网过,pat没过...
  12. 1.编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
  13. 使用 LwIP TCP/IP 栈,在 STM32Cube 上开发应用
  14. dnf时装补丁教程_【时装补丁制作】消灭伸手党!最详细的图文教程~
  15. 视频格式mp4转emf
  16. 2021-2027全球与中国外卖盒市场现状及未来发展趋势
  17. 设计模式-手机生产-抽象工厂模式
  18. 什么是技术债,为什么要还技术债?
  19. layui设置请求加载旋转等待
  20. 【转载】十款必备牛逼的IDEA插件

热门文章

  1. 关于SparkStreaming的checkpoint的弊端
  2. sendmail邮件服务搭建详细解   小小子
  3. 超级简单的mysql主从数据库配置攻略以及错误处理
  4. 如何看期权是实值还是虚值?
  5. 陷入迷茫的时候怎么办呢?
  6. think as a children
  7. how you can go to attend eap freely?
  8. 可能没有很好的重工业转型的case
  9. 生死6小时!!!!!!!!!!!!!!!!1
  10. Java springcloud B2B2C o2o多用户商城 springcloud架构 (二十二)创建含有多module的springboot工程...