博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【USACO 2.4】Cow Tours (最短路)
阅读量:6328 次
发布时间:2019-06-22

本文共 1739 字,大约阅读时间需要 5 分钟。

题意:给你n(最多150)个点的坐标,给出邻接矩阵,并且整个图至少两个联通块,现在让你连接一条边,使得所有可联通的两点的最短距离的最大值最小。

题解:先dfs染色,再用floyd跑出原图的直径O($n^3$),然后枚举新增的边的端点O($n^2$),再分别找出到边端点距离最远的点($n$),那么添加这条边后新图的直径要么是原图直径要么就是两个端点到各自最远点的距离之和加上边的长度。每次维护最小的直径。这样总的是O($n^3$)。

代码:

/*TASK:cowtourLANG:C++*/#include
#include
#include
const double INF=0x3f3f3f3f;using namespace std;#define N 155int n,x[N],y[N],b[N];int color;double ans;double d[N][N];double dis(int i,int j){
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}void dfs(int x){ b[x]=color; for(int i=1;i<=n;i++) if(d[x][i]!=INF&&!b[i]) dfs(i);}int main(){ freopen("cowtour.in","r",stdin); freopen("cowtour.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d %d ",&x[i],&y[i]); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)d[i][j]=INF; for(int i=1;i<=n;i++) for(int j=1;j<=n+1;j++){ char c=getchar(); if(c=='1') d[i][j]=dis(i,j); } for(int i=1;i<=n;i++) if(!b[i]){ color++; dfs(i); } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)if(i!=j) if(d[i][j]>d[i][k]+d[k][j]) d[i][j]=d[i][k]+d[k][j]; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++)if(d[i][j]!=INF) ans=max(ans,d[i][j]); double m=INF; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++)if(b[i]!=b[j]){ double d1=0,d2=0; for(int k=1;k<=n;k++){ if(d[i][k]!=INF) d1=max(d1,d[i][k]); if(d[k][j]!=INF) d2=max(d2,d[k][j]); } m=min(m,d1+d2+dis(i,j)); } printf("%f\n",max(m,ans)); return 0;}

 

  

 

转载地址:http://yrgaa.baihongyu.com/

你可能感兴趣的文章
Android视图状态及重绘流程分析,带你一步步深入了解View(三)
查看>>
MATLAB那些常见的命令
查看>>
OpenCV iOS开发(一)——安装(转)
查看>>
div的显示隐藏方法汇总
查看>>
从零开始实现微信机器人
查看>>
【原创】应用克隆,从支付宝自动领红包链接谈起
查看>>
javascript继承
查看>>
TCP和UDP的区别(转)
查看>>
python 之队列和生产者消费者模型、基于selectors模块实现的IO多路复用
查看>>
《将博客搬至CSDN》
查看>>
对T4模板研究-针对SQL SERVER的EF代码生成
查看>>
php的基础知识(一)
查看>>
Dart: puppeteer库
查看>>
javaMai+Springl实现给QQ邮箱发邮件(带附件,html格式)
查看>>
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
查看>>
【转载】wpf数据绑定binding与INotifyPropertyChanged
查看>>
oracle连接两个数据库
查看>>
Sybase常用函数
查看>>
RMAN-format变量及configuration配置项
查看>>
Properties中的主要方法
查看>>