[U]2.4.3 Cow Tours

php中文网
发布: 2016-06-07 15:39:07
原创
1381人浏览过

总算是做到了一点点的图论题了~ 意味着后面的难题要来了 还是觉得自己太懒,不愿去花时间,不愿意相信自己。 这个题呢,有点点意思,本来我的代码超时的,随手改了点小东西,没预料到过的竟然过了~ 哇哈哈哈~另类的秒掉了。 解题思路很简单,但是求解过程中

总算是做到了一点点的图论题了~ 意味着后面的难题要来了

还是觉得自己太懒,不愿去花时间,不愿意相信自己。

这个题呢,有点点意思,本来我的代码超时的,随手改了点小东西,没预料到过的竟然过了~ 哇哈哈哈~另类的秒掉了。

解题思路很简单,但是求解过程中会绕很多圈子,有点头疼。

枚举不在一个联通图中的两个点,做边连接它们,在根据题中的定义,求出农场的直径,再通过寻找农场直径中最大值的最小值。这里佷绕!!!

可灵大模型
可灵大模型

可灵大模型(Kling)是由快手大模型团队自研打造的视频生成大模型

可灵大模型 385
查看详情 可灵大模型

Code:

/*
ID:sevenst4
LANG:C++
PROG:cowtour
*/
#include<stdio.h>
#include<cmath>
#define INF 1111111
using namespace std;

struct node
{
 	   double x,y;
}p[160];

int n;
double dis[160][160];

double max( double a,double b ){ return a>b?a:b; }
double min( double a,double b ){ return a<b?a:b; }

double dist( int i,int j ){
 	   return 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) );
}

double gmdis( int a )
{
 	   double ret=0;
 	   for( int i=1;i<=n;i++ )
 	   		if( a!=i && dis[a][i]!=INF )
 	   			ret=ret>dis[a][i]?ret:dis[a][i];
       return ret;
}

double getall()
{
 	   double ret=0;
 	   for( int i=1;i<=n;i++ )
	   for( int j=1;j<=n;j++ )
	   		if( i!=j && dis[i][j]!=INF ) 
	   	   		ret=max(ret,dis[i][j]);
	   return ret;
}

int main()
{
 	freopen( "cowtour.in","r",stdin );
 	freopen( "cowtour.out","w",stdout );
 	scanf( "%d",&n );
 	
	for( int i=1;i<=n;i++ )
 		 scanf( "%lf %lf",&p[i].x,&p[i].y );
	
	for( int i=0;i<=n;i++ )
	for( int j=0;j<=n;j++ )
		 dis[i][j]=INF;
	
	char line[160];
	for( int i=1;i<=n;i++ )
	{
	 	 scanf( "%s",&line );
	 	 for( int j=0;j<n;j++ )
	 	 	  if( line[j]=='1' )
			   	  dis[i][j+1]=dist(i,j+1);
    }
    
    for( int k=1;k<=n;k++ )
    for( int i=1;i<=n;i++ )
    for( int j=1;j<=n;j++ )
    	 if( dis[i][j]>dis[i][k]+dis[k][j] )
    	 	 dis[i][j]=dis[i][k]+dis[k][j];
    
    double ans=INF;
    for( int i=1;i<=n;i++ )
    for( int j=1;j<=n;j++ )
    	 if( i!=j && dis[i][j]==INF )
    	 {
		  	 double m=gmdis(i)+dist(i,j)+gmdis(j);
		  	 if( m>ans )
		  	 	 continue;
		  	 ans=min( max( getall(),m ),ans );
  	     }
  	     
	printf( "%lf\n",ans );
	
 	return 0;
}
登录后复制



最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号