USACO section2.4 Cow Tours题解代码
把max()和min()用反了过了6组也是挺醉的,USACO数据也会这么水23333
一道写起来有点麻烦的题目,并查集+floyd就可以了…
/*
ID:rainbow16
LANG:C++
TASK:cowtour
*/
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
char temp[155];
int fa[1000],r[155][155],x[155],y[155],n;
double d[155][155],ma[155],ans,ansl=0xfffffff;
double dis(int i,int j)
{return sqrt((double)((x[i]-x[j])*(x[i]-x[j]))+(double)((y[i]-y[j])*(y[i]-y[j])));
}
void init(void)
{for(int i=1;i<1000;i++)fa[i]=i;
}
int fin(int x)
{if(fa[x]==x)return x;return fa[x]=fin(fa[x]);
}
void unio(int x,int y)
{if(fin(x)!=fin(y))fa[fin(x)]=fin(y);
}
void floyd(void)
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i!=j && i!=k && j!=k && r[i][k] && r[j][k]){r[i][j]=2;d[i][j]=d[i][j]?min(d[i][j],d[i][k]+d[j][k]):d[i][k]+d[j][k];}}
int main(void)
{freopen("cowtour.in","r",stdin);freopen("cowtour.out","w",stdout);init();scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);for(int i=1;i<=n;i++){scanf("%s",&temp);for(int j=1;j<=n;j++){r[i][j]=temp[j-1]-'0';if(r[i][j]){unio(i,j);d[i][j]=d[j][i]=dis(i,j);ma[i]=max(ma[i],d[i][j]);ma[j]=max(ma[j],d[i][j]);}}}floyd();for(int i=1;i<=n;i++)for(int j=i+1;j<=n;j++)if(r[i][j]){ma[i]=max(ma[i],d[i][j]);ma[j]=max(ma[j],d[i][j]);}for(int i=1;i<=n;i++)ans=max(ans,ma[i]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(fin(i)!=fin(j))ansl=min(ansl,ma[i]+ma[j]+dis(i,j));printf("%f\n",ans>ansl?ans:ansl);return 0;
}
USACO section2.4 Cow Tours题解代码相关推荐
- usaco Cow Tours 牛的旅行
Cow Tours 牛的旅行 农民 John 的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场. 但是就目前而言,你能看到至少有两个牧区不连通.这样,农民 John 就有 ...
- 信息学奥赛一本通 1343:【例4-2】牛的旅行 | 洛谷 P1522 [USACO2.4] 牛的旅行 Cow Tours
[题目链接] ybt 1343:[例4-2]牛的旅行 洛谷 P1522 [USACO2.4] 牛的旅行 Cow Tours [题目考点] 1. 图论 最短路径 Floyd算法 Floyd算法时间复杂度 ...
- FPGA数字IC刷题58道Verilog题解代码及视频讲解【FPGA探索者】【同步/异步FIFO】【跨时钟】
牛客 Verilog 刷题入门篇1~24 + 进阶篇1~34 题解代码,所有代码均能通过测试,配合视频讲解效果更佳.为避免内容冗余,本文只给出代码,部分题目给出必要说明. 很多题目本身出题有些问题,着 ...
- C++小木棍题解代码(备用)
C++小木棍题解代码(备用) #include<iostream> #include<cstdio> #include<cstring> #include<a ...
- USACO 2022 December Contest, BronzeProblem 1. Cow College 题解
以下是2022年-2023年USACO赛季第一个月的青铜组第一题,可以使用"计数数组+打擂台找最值"的思想,需要考生掌握一点算法才能通关.文章引用了官网题面,提供思考思路和代码,代 ...
- 【bzoj1612】【Usaco2008 Jan】Cow Contest奶牛的比赛 题解代码
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1612 题解: 对于这种题我们发现可以dfs求出一共有多少头牛比他强,一共有多少头牛比他弱 ...
- 【USACO 2.3.4】Cow Tours 牛的旅行
题目描述 农民 John的农场里有很多牧区.有的路径连接一些特定的牧区.一片所有连通的牧区称为一个牧场.但是就目前而言,你能看到至少有两个牧场通过任何路径都不连通.这样,Farmer John就有多个 ...
- usaco Cow Tours
题意是给出一个不连通的图,然后定义了一个直径:联通分量里最短距离最长的两个点之间的距离. 求将一个不连通的图中的两个连通分量连接,生成的这个新分量的直径最小可以有多小,输出这个新直径. 做法是想用Fl ...
- usaco Arithmetic Progressions(看了题解)
usaco也开始限时了,这题是搜索加剪枝.剪枝很关键.(哎........怎么才能不看题解解题啊) /* ID: jinbo wu LANG: C++ TASK: ariprog */ #includ ...
最新文章
- Distinct Subsequences@LeetCode
- 三角网导线平差实例_第讲(三角网条件平差.ppt
- java环境变量详解---找不到或无法加载主类
- Luogu P2341 [HAOI2006]受欢迎的牛
- latex图片标题居中
- ACM001 Quicksum
- js模块化编程之彻底弄懂CommonJS和AMD/CMD!
- Android 2048游戏开发
- Java内存与垃圾回收调优
- 看我如何解决tomcat控制台内容输出乱码的问题?
- 区块链中心化业务必须基于中心化平台吗?
- 基于QT实现简单的音乐播放器
- js数据的编码和解码
- 昂达平板装linux系统下载,U盘启动:昂达平板用上了Ubuntu Uudgie 16.10 Linux操作系统...
- 服务器带宽打开网页很慢,为什么网速很快,但打开的网页速度却很慢?
- [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
- 华为Mate40 Pro 66w充电器冒火花怎么回事?
- Java核心编程随笔
- html中搜索栏怎么写,html搜索框怎么做
- 数据分析入门——美国各州人口分析