P1522 [USACO2.4]牛的旅行 Cow Tours
思路
- 牧区可以抽象成图上每一个点
- 牧场可以看作连通块
- 新牧场的最大直径=两点到未连通前两个牧场的最大距离(保证满足题意:一个牧场的直径就是牧场中最远的两个牧区的最短距离)+两点之间最短距离
实现
- 邻接矩阵存图
- floyed计算连通块内最短距离
- 一个数组存储点到它所在的连通块的最大距离
- 枚举任意两点,记录添加后最大距离
Code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
int n;
const int inf=0x3f3f3f3f;
const int maxn=200;
double mp[maxn][maxn];
int k=0;
int f[maxn];
double disf[maxn];
struct nodep{
int x,y;
}p[maxn];
double ans;
double ll=0;
double disd(int x,int y){
return sqrt(