关闭

nyoj115 城市平乱(dijkstra算法)

标签: nyoj115nyoj 115dijkstra算法
1516人阅读 评论(0) 收藏 举报
分类:

城市平乱

时间限制: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的思想,就想着自己做做,结果悲剧了。不知道如何存贮点了,用的数组一直错误,唉。最后还是百度的,用队列。

dijkstra思想就在这个图片里面。

这是这位大牛讲的dijkstra思想。点击打开链接

 
 
#include <stdio.h>
#include <string.h>
#include <queue>
#define inf 0x3fffffff
using namespace std;
int buDui[105],map[1005][1005],vis[1005],m,stamp[1005];
queue<int> s;
int dijkstra(int star,int end,int min)
{
	s.push(star);
	while(!s.empty())
	{
		star=s.front();
		for(int i=1;i<=m;i++)
		{
			if(i!=star&&map[star][i]&&map[star][i]+stamp[star]<stamp[i]&&!vis[i])
			{
				s.push(i);
				stamp[i]=map[star][i]+stamp[star];//stamp数组更新star到i的距离
			}
		}
		vis[star]=1;
		s.pop();
	}
	return stamp[end];
}
int main()
{
	int ncase,min,p,q,n,x,a,b,cost;
	scanf("%d",&ncase);
	while(ncase--)
	{
		memset(map,0,sizeof(map));
		scanf("%d %d %d %d",&n,&m,&p,&q);
		for(int i=0;i<n;i++)
		scanf("%d",&x),buDui[i]=x;
		for(int i=0;i<p;i++)
		{
			scanf("%d %d %d",&a,&b,&cost);
			map[a][b]=map[b][a]=cost;
		}
		min=inf;
		for(int i=0;i<n;i++)
		{
			memset(stamp,100,sizeof(stamp));
			memset(vis,0,sizeof(vis));
			stamp[buDui[i]]=0;
			int result=dijkstra(buDui[i],q,inf);
			if(result<min)
			min=result;
		}
		printf("%d\n",min);
	}
	return 0;
}                


1
0
查看评论

Dijkstra算法 NYOJ115城市平乱

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 现在,小工军师告诉南将军,第...
  • zpf_nevergiveup
  • zpf_nevergiveup
  • 2017-03-12 19:16
  • 99

nyoj115(城市平乱)(dijkstra算法)

#include #include #define INF 10000 int map[1007][1007]; int n,m,army[105]; int dijkstra(int q) {     int flag[1007],dis[1007];    ...
  • u012198446
  • u012198446
  • 2014-01-19 16:02
  • 380

nyoj115 城市平乱(最短路 dijkstra)

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 ...
  • u013634213
  • u013634213
  • 2014-10-15 21:01
  • 495

nyoj115城市平乱

南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往暴乱城市平乱。 现在已知在任意两个城市之间的路行军所需的时间,你作为南将军...
  • FLYERISON
  • FLYERISON
  • 2016-09-11 21:44
  • 125

NYOJ115 城市平乱

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 题目分析:这肯定是一条求最短路的题,最开始的想法是用floyd算法来做,结果悲剧的TLE。 int Map[1001][1001]; int dp[1001][1001]; i...
  • kay_zhyu
  • kay_zhyu
  • 2013-04-20 21:57
  • 840

NYOJ115 城市平乱 【SPFA】

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 ...
  • u012846486
  • u012846486
  • 2014-10-14 23:42
  • 707

城市平乱(dijkstra)

时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都派遣了一个分队沿最近路去往...
  • STILLxjy
  • STILLxjy
  • 2016-07-19 20:26
  • 254

115 城市平乱【dijkstra】

城市平乱 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市。 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M。 ...
  • liuke19950717
  • liuke19950717
  • 2015-09-09 21:27
  • 195

NYOJ115城市平乱_单源点最短路径(spfa)

题目链接 第一次敲的时候我用的是vector,看题的时候心里还在想着要判重边,把代码都敲完后发现了问题,用vector没办法判断重边啊~又把数据结构赶紧改成了邻接矩阵,同时也发现了自己容易犯的错误!学了新东西就只用新的,不善于思考两者的优劣势,(工欲善其事必先利其器)这句话自己没做到!!真是大忌啊...
  • lp15203883326
  • lp15203883326
  • 2017-05-04 16:44
  • 179

城市平乱_NYOJ_115(dijkstra).java

迪杰斯特拉算法
  • u010103075
  • u010103075
  • 2013-08-20 21:53
  • 1060
    个人资料
    • 访问:1426951次
    • 积分:21073
    • 等级:
    • 排名:第445名
    • 原创:602篇
    • 转载:18篇
    • 译文:0篇
    • 评论:376条
    你只管努力 其它交给时光

    点图片联系我


    唐唐女神

    点图片联系我

    访问统计
    Flag Counter
    博客专栏
    最新评论