zoukankan      html  css  js  c++  java
  • poj 2253 floyd最短路

    题目链接 : http://poj.org/problem?id=2253;

    思路:这个题主要是理解了意思就行,题目意思是有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃,而从A到B有若干通路,问从A到B的所有通路上的最大边并且这个最大边在所有通路上最小  例如  :1(6)4(3)2代表1到4之间的边为6,  4到2之间的边为3,那么该条通路跳跃范围(两块石头之间的最大距离)为 6, 另一条通路 1(3) 4(1) 2,则这条路最大跳跃范围为3,两条路条约范围分别为6,3,我们要求在所有通路中最小的跳跃范围,所以最终结果为 3.

    poj 1797求得是路径最小边的最大值,与本题类似

    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    double dis[1001][1001];
    int main()
    {
    	int i,j,n,m,k;
    	int x[1001],y[1001],t = 0;
    	while(~scanf("%d",&n)&&n){
    		t++;
    		memset(dis,0,sizeof(dis));
    		for(i = 1; i <= n; i++){
    			cin>>x[i]>>y[i];
    		}
    		for(i = 1; i <= n; i++){
    			for(j = i+1; j <= n; j++){
    				dis[i][j] = dis[j][i] = sqrt((double)(x[i]-x[j])*(x[i]-x[j])+(double)(y[i]-y[j])*(y[i]-y[j]));
    			}
    		}	
    		for(k = 1; k <= n; k++){
    			for(i = 1; i <= n; i++){
    				for(j = 1; j <= n; j++){
    					dis[i][j] = min(dis[i][j],max(dis[i][k],dis[k][j]));  //求在所有通路中最长边的最小边
    				}
    			}
    		}
    		printf("Scenario #%d
    Frog Distance = %.3f
    
    ",t,dis[1][2]);
    	}
    }
    

      

  • 相关阅读:
    cesium入门示例-矢量化单体分类
    cesium入门示例-3dTiles加载
    cesium入门示例-geoserver服务访问
    cesium入门示例-HelloWorld
    java中函数传值与引用问题
    jni使用问题总结
    geoserver源码学习与扩展——增加服务接口
    go-ipfs入门及介绍
    安装GoMap
    Gogeos安装
  • 原文地址:https://www.cnblogs.com/clb123/p/10679580.html
Copyright © 2011-2022 走看看