UVa 10803 - Thunder Mountain

原创 2015年07月09日 09:50:38

題目:給你平面上的n個點(笛卡爾坐標),每個點之間都有連線,如果距離超過10就認為斷開;

            請你給出所有點間最短距離的最大值。

分析:最短路。多源最短路使用floyd算法。

            首先建圖,然後將大於10的邊都定義成oo,求解最短路,輸出最短路中的最大值即可。

說明:距離700題還有40題╮(╯▽╰)╭。

#include <cstring>
#include <cstdio>
#include <cmath>

const double oo = 50000;

typedef struct _point
{
	double x,y;
}point;
point  P[101];

double dist[101][101];

int main()
{
	int T,n;
	while (~scanf("%d",&T)) 
	for (int t = 1; t <= T; ++ t) {
		//input
		scanf("%d",&n);
		for (int i = 0; i < n; ++ i)
			scanf("%lf%lf",&P[i].x,&P[i].y);
		//initial
		for (int i = 0; i < n; ++ i)
		for (int j = 0; j < n; ++ j) {
			dist[i][j] = sqrt((P[i].x-P[j].x)*(P[i].x-P[j].x)+(P[i].y-P[j].y)*(P[i].y-P[j].y));
			if (dist[i][j] > 10.0)
				dist[i][j] = oo;
		}
		//floyd
		for (int k = 0; k < n; ++ k)
		for (int i = 0; i < n; ++ i)
		for (int j = 0; j < n; ++ j)
			if (dist[i][j] > dist[i][k]+dist[k][j])
				dist[i][j] = dist[i][k]+dist[k][j];
		//find max
		double Max = 0;
		for (int i = 0; i < n; ++ i)
		for (int j = 0; j < n; ++ j)
			if (Max < dist[i][j])
				Max = dist[i][j];
		//output
		printf("Case #%d:\n",t);
		if (Max == oo)
			printf("Send Kurdy\n\n");
		else printf("%.4lf\n\n",Max);
	}
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

uva 10803 Thunder Mountain

uva 10803 Thunder Mountain
  • tengfei461807914
  • tengfei461807914
  • 2017年01月25日 13:42
  • 152

uva 10803 - Thunder Mountain

//floyd算法//floyd算法描述:1.它是基于动规的//                     2.它是基于如下特点的:设k是i->j的中间点.那么:(1)如果从i到j的最短路径中不包含点k...
  • xiayang05
  • xiayang05
  • 2011年03月16日 21:12
  • 734

UVA - 10803 Thunder Mountain

题意:给出一些坐标,如果有两点的距离大于10的话,就代表无法到达,问是否是强连通求出最短路,,是的话就求出最短路的最大值 #include #include #include #include...
  • u011345136
  • u011345136
  • 2013年11月10日 20:04
  • 985

Thunder Mountain - UVa 10803 Floyd

Problem ? Thunder Mountain Time Limit: 3 seconds "I mean, some people got guns, and som...
  • u014733623
  • u014733623
  • 2015年01月02日 16:44
  • 395

uva 10803 Thunder Mountain (floyd)

uva 10803 Thunder Mountain题目大意:给出n个点的坐标,要求n个点每两点之间的最大距离。若这n个点,有不连通的地方,则输出Send Kurdy。解题思路:Floyd。#incl...
  • llx523113241
  • llx523113241
  • 2015年07月24日 14:57
  • 409

UVA 10803 - Thunder Mountain(floyd)

Problem ? Thunder Mountain Time Limit: 3 seconds "I mean, some people got guns, and s...
  • u011217342
  • u011217342
  • 2013年11月28日 20:58
  • 1395

uva 10803 Thunder Mountain(最短路)

题目链接: 10803 - Thunder Mountain 题目大意:给出一些点的坐标然后如果这两个点之间的距离大于10的话代表不能够移动,问说里面任意一个点是否可以到达其他的点,如果所有...
  • u011328934
  • u011328934
  • 2013年10月18日 15:45
  • 1175

10803 - Thunder Mountain

求出任意A点到B点 的最大距离 folyd求各点出间的距离 #include #include #include double x[110],y[110]; double d[1...
  • chenchaoflight
  • chenchaoflight
  • 2012年12月02日 21:42
  • 234

UVA - 10803 Thunder Mountain 最短路的最大值

题目大意:有N个乡村,如果乡村间的距离大于10的话就表示两乡村之间不能直接连通,求连通的乡村中,两个乡村间的最大距离是多少 解题思路:将距离大于10的乡村间的距离设置为INF,再用floyd求出乡村...
  • L123012013048
  • L123012013048
  • 2014年12月04日 23:51
  • 630

UVa 10803 Thunder Mountain (任意两点最短路的最大值+Floyd)

ans ∗ 1e+4 − ⌊ans ∗ 1e+4⌋ − 0.5| > 1e−2 题意:给出n个点的坐标,要求n个点每两点之间的最大距离。若这n个点,有不连通的地方,则输出Send Kurd...
  • Slow_Wakler
  • Slow_Wakler
  • 2015年08月07日 15:32
  • 494
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 10803 - Thunder Mountain
举报原因:
原因补充:

(最多只允许输入30个字)