博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 - P1522 - 牛的旅行 - Cow Tours - Floyd
阅读量:4681 次
发布时间:2019-06-09

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

好坑啊,居然还有直径不通过新边的数据,还好不是很多。

注意一定要等Floyd跑完之后再去找连通块的直径,不然一定是INF。

#include 
#include
#include
#include
using namespace std;int pre[155];void init(int n) { for(int i = 0; i < n; ++i) pre[i] = i;}double D[155];int find(int x) { return pre[x] == x ? x : pre[x] = find(pre[x]);}void unit(int x, int y) { int fx = find(x), fy = find(y); if(!(fx == fy)) pre[fx] = fy;}bool iscc(int x, int y) { return find(x) == find(y);}double pos[155][2];double dis_t[155][155];double dist(int i, int j) { return sqrt((pos[i][0] - pos[j][0]) * (pos[i][0] - pos[j][0]) + (pos[i][1] - pos[j][1]) * (pos[i][1] - pos[j][1]));}int main() {#ifdef Yinku freopen("Yinku.in", "r", stdin);#endif // Yinku init(150); int n; cin >> n; for(int i = 0; i < n; ++i) cin >> pos[i][0] >> pos[i][1]; char ch; for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) dis_t[i][j] = 1e9; for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) { cin >> ch; if(ch == '1') { unit(i, j); dis_t[j][i] = dis_t[i][j] = dist(i, j); } if(i == j) dis_t[i][j] = 0; } for(int k = 0; k < n; ++k) for(int j = 0; j < n; ++j) for(int i = 0; i < n; ++i) { if(iscc(i, j)) { dis_t[i][j] = min(dis_t[i][j], dis_t[i][k] + dis_t[k][j]); } } double max_dis[155] = {}; for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ if(iscc(i, j)){ max_dis[i] = max(max_dis[i], dis_t[i][j]); } } D[find(i)] = max(D[find(i)], max_dis[i]); } double minn = 1e9; for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) if(!iscc(i, j)) { minn = min(minn, max(max(D[find(i)], D[find(j)]), dist(i, j) + max_dis[i] + max_dis[j])); } /*char s[20005]; sprintf(s,"%.8f\n", minn); int pi=0; for(pi=0;s[pi]!='.';++pi); s[pi+7]='\0'; puts(s);*/ printf("%.6f\n", minn); return 0;}

转载于:https://www.cnblogs.com/Yinku/p/11343571.html

你可能感兴趣的文章
TCP三次握手原理与SYN攻击
查看>>
SpringBoot2.x集成WebSocket
查看>>
newFixedThreadPool固定线程使用
查看>>
Kruskal-Wallis Test and Friedman test
查看>>
011
查看>>
第一次的博客~
查看>>
iOS-绘图(Quartz2D)的简单使用(原创)
查看>>
D3.js的基础部分之数组的处理 映射(Map)(v3版本)
查看>>
mysql5.7.22安装步骤
查看>>
利用set排序数组并且去掉重复的数组元素
查看>>
那些实用的Nginx规则
查看>>
经典问题和算法
查看>>
php 部署在iis HTTP 错误 500.0 - Internal Server Error 无法在<fastCGI>应用程序配置中找到<handler> scriptProcessor...
查看>>
一些模板
查看>>
【转】Linux上的free命令详解
查看>>
Android--很实用的图片工具类
查看>>
centos下/etc/sysconfig/下找不到iptables文件
查看>>
linux安装jdk
查看>>
JAVA Http Basic auth
查看>>
Python3.6全栈开发实例[002]
查看>>