USACO2.4.3 Cow Tours (cowtour)
来源:互联网 发布:汇付数据 编辑:程序博客网 时间:2024/06/04 18:19
核心是Floyd求任意两点最短路,如下:
//Floyd算法void floyd(int n) { for(int k=0;k<n;k++) for(int i=0;i<n;i++) for(int j=0;j<n;j++) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);}
MAP[ ][ ]记录两点间是否有边,并用point_dis[ ][ ]计算出任意两点之间的距离
dis[ ][ ]则是实际有边的两点间的最短路,不存在的即为极大值INF(可用1000000000)
对于每一个点i,扫描所有点j,如果用zui[ i ]记录到点i到它所能达到的最远点的距离
枚举边,如果没有边,则添加,计算更新ans值
/*ID:xsy97051LANG:C++TASK:cowtour*/#include <iostream>#include <cstdio>#include <cmath>using namespace std;#define MAXN 155#define INF 1000000000int n;int X[MAXN],Y[MAXN];double point_dis[MAXN][MAXN],dis[MAXN][MAXN],zui[MAXN];bool Map[MAXN][MAXN];double juli(int x1,int y1,int x2,int y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}void floyd(int n) { for(int k=0;k<n;k++) for(int i=0;i<n;i++) for(int j=0;j<n;j++) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);} int main(){freopen("cowtour.in","r",stdin);freopen("cowtour.out","w",stdout);cin>>n; for(int i=0;i<n;i++) cin>>X[i]>>Y[i]; for(int i=0;i<n;i++) { string st;cin>>st; for(int j=0;j<n;j++) Map[i][j]=st[j]-'0'; }for(int i=0;i<n;i++) for(int j=0;j<n;j++){ if(i==j) { point_dis[i][j]=dis[i][j]=0; continue;} point_dis[i][j]=juli(X[i],Y[i],X[j],Y[j]); if(Map[i][j]) dis[i][j]=point_dis[i][j]; else dis[i][j]=INF; } floyd(n); for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(dis[i][j]<INF)zui[i]=max(zui[i],dis[i][j]); double ans=INF; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) if(!Map[i][j] && dis[i][j]==INF) { double nowmax=zui[i]+point_dis[i][j]+zui[j]; if(nowmax>=ans) continue; for(int k=0;k<n;k++) nowmax=max(nowmax, zui[k]); ans=nowmax; } printf("%.6f\n",ans); return 0;}
0 0
- USACO2.4.3 Cow Tours (cowtour)
- USACO2.4.3 Cow Tours (cowtour)
- usaco2.4.3 Cow Tours
- USACO 2.4 Cow Tours (cowtour)
- usaco2.4 cowtour
- Cow Tours
- USACO Cow Tours 题解
- 【图论】【USACO】Cow Tours
- [U]Cow Tours
- usaco Cow Tours
- USACO:PROB Cow Tours
- USACO-Cow Tours
- USACO--2.4Cow Tours
- usaco Cow Tours
- usaco Training Cow Tours
- usaco2.32Cow Pedigrees
- USACO:Cow Tours解题报告
- [U]2.4.3 Cow Tours
- java 发送短信sms实现接口
- 【GLSL教程】(一)图形流水线
- java FTPClient 文件上传内容为空
- Java_集合操作_反转集合
- android 双卡双待 发送短信
- USACO2.4.3 Cow Tours (cowtour)
- 【GLSL教程】(二)在OpenGL中使用GLSL
- DB2 - Instance
- Windows XP硬盘安装Ubuntu 12.04双系统图文详解
- 使用 Spring Data JPA 简化 JPA 开发
- MOS场效应管的制作流程。
- 数据科学的完整学习路径—Python版
- 【整理】双模双待、双卡双待、双模双待双通、双频手机
- Android Fragment真正de完全解析