USACO2.4のP1522-牛的旅行(Cow Tours)【最短路Flody】

正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1522


题目大意

有n个点,连接任意两个不同联通块上的点,使这个新的联通块之间最远的两个点的距离最远。


解题思路

先FlodyO(n3)O(n^3)O(n3)计算两两之间的距离
然后计算出每个点最远的点的距离,之后对于枚举两个不同联通块中的点,那么可能产生的新的权值就是两个个点的最远的点距离加上这两个点之间的距离,但是还要和合并前联通块中最远的点的距离比较


code

// luogu-judger-enable-o2
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#define N 160
#define pows(x) x*x
using namespace std;
int n,inx[N],tot;
double x[N],y[N],a[N][N],d[N],md[N],mins;
char c;
double const_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)//分联通块
{inx[x]=tot;for(int i=1;i<=n;i++)if(!inx[i]&&a[x][i]!=2147483647)dfs(i);
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%lf%lf",&x[i],&y[i]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){cin>>c;if(c=='1')a[i][j]=const_dis(i,j);else if(i!=j) a[i][j]=2147483647;}for(int i=1;i<=n;i++)if(!inx[i]) tot++,dfs(i);for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(a[i][k]+a[k][j]<a[i][j])a[i][j]=a[i][k]+a[k][j];//计算最短路for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)if(a[i][j]!=2147483647)md[i]=max(md[i],a[i][j]);//每个点的最远距离d[inx[i]]=max(d[inx[i]],md[i]);//每个联通块最远距离}mins=2147483647;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)if(inx[i]!=inx[j])mins=min(mins,max(md[i]+md[j]+const_dis(i,j),max(d[inx[i]],d[inx[j]])));printf("%.6lf",mins);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一起聊聊Microsoft.Extensions.DependencyInjection

Microsoft.Extensions.DependencyInjection在github上同样是开源的&#xff0c;它在dotnetcore里被广泛的使用&#xff0c;比起之前的autofac,unity来说&#xff0c;它可以说是个包裹&#xff0c;或者叫适配器&#xff0c;它自己提供了默认的DI实现&#xff0c;同时也支持第三方…

这 10 道 Spring Boot 常见面试题你需要了解下

转载自 这 10 道 Spring Boot 常见面试题你需要了解下 1.什么是Spring Boot&#xff1f; 多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。只需访问https://spring.io/projects页面&#xff0c;我们就会看到可以在我们的应用程序中使用的所有Spring项…

【git】如何给github绑定ssh

首先在git上输入 &#xff1a; ssh-keygen 会在c盘的用户账号的文件夹.ssh上生成两个密钥 &#xff08;如果没有生成&#xff0c;请注意自己是否按了enter&#xff0c;出现一个小方框为止&#xff09; 将.pug用笔记本打开 全选复制 来到github的设置上 将刚刚复制的东西黏…

nssl1231-Gift【01背包,dp】

正题 题目大意 n个物品&#xff0c;每个物品有cic_ici​元&#xff0c;求有多少种方案数使得无法再买另外任何的东西。 解题思路 我们发现其实对于每种方案判断只需要考虑剩下的最小的哪一个&#xff0c;所以我们可以将ccc从小到大排序。然后用fi,jf_{i,j}fi,j​表示选择了1∼…

【杭州】Hack for Cloud Beginner微软黑客松大赛

在这美丽的西子湖畔&#xff0c;我们欢迎各行各业的开发者参与此次Hack for Cloud Beginner微软黑客松大赛。我们致力于为开发者们提供在技术、社区领域中的交流平台&#xff0c;重在参与&#xff0c;意于创新。 此次黑客松大赛将于10月22日在中国杭州拉开帷幕&#xff0c;参与…

Java高级开发必会的50个性能优化的细节(珍藏版)

转载自 Java高级开发必会的50个性能优化的细节&#xff08;珍藏版&#xff09; 在JAVA程序中&#xff0c;性能问题的大部分原因并不在于JAVA语言&#xff0c;而是程序本身。养成良好的编码习惯非常重要&#xff0c;能够显著地提升程序性能。 ● 1. 尽量在合适的场合使用单例…

nssl1232-函数【数论,欧拉函数,莫比乌斯反演】

正题 题目大意 ∑d∣nf(d)n\sum_{d|n}f(d)nd∣n∑​f(d)n 对于n个aia_iai​ 求 ∑i1nf(ai)\sum_{i1}^nf(a_i)i1∑n​f(ai​) 解题思路——莫比乌斯反演 这个方法对于aia_iai​比较大时比较好用&#xff0c;但是事实证明本题过不了。 用莫比乌斯反演可得到此公式 f(n)∑d∣nμ(…

从0部署一个动态网站

准备&#xff1a;购买域名和服务器 下载软件&#xff1a;服务器上下载宝塔面板和xampp 首先区分动态网站和静态网站区别&#xff1a;动态网站是指数据可以交互的&#xff0c;根据不同的人出现不同的页面&#xff0c;要用到数据库和php。登录注册是动态网站最基础的部分 而静态…

最新的.NET Framework聚焦于改进可访问性

Microsoft宣布预发布.NET Framework 4.7.1&#xff0c;其中包括了各种全面的改进。这里&#xff0c;我们关注一下在WPF应用可访问性上所做的改进。改进的设想针对领域是屏幕报读器&#xff08;Screen Reader&#xff09;和高对比度场景。Microsoft的Preeti Krishna表示&#xf…

MYSQL 入门全套

转载自 MYSQL 入门全套 MySQL简介 1、什么是数据库 &#xff1f; 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c;它产生于距今六十多年前&#xff0c;随着信息技术和市场的发展&#xff0c;特别是二十世纪九十年代以后&am…

nssl1230-序列【位运算】

正题 题目大意 长度为n的序列&#xff0c;求两个长度大于等于kkk的连续序列&#xff0c;一个位运算“和”后最大的答案&#xff0c;和“或”后最大的答案。 解题思路 首先ororor baorxba\ or\ xba or x的话&#xff0c;b⩾ab\geqslant ab⩾a 所以答案就是所有的或起来 然后a…

ImageSharp一个专注于NetCore平台图像处理的开源项目

今天大家分享的是一个专注于NetCore平台图像处理的开源项目&#xff0c;老实说为这篇文章取名字想了5分钟&#xff0c;可能是词穷亦或是想更好的表达出这款开源项目的作用&#xff1b;这个项目在图像处理方面有很多功能&#xff0c;如&#xff1a;缩放&#xff0c;裁剪&#xf…

【开源组件】一份值得收藏的的 MySQL 规范

转载自 【开源组件】一份值得收藏的的 MySQL 规范 数据命名规范 所有数据库对象名称必须使用小写字母并用下划线分割。 所有数据库对象名称禁止使用 MySQL 保留关键字&#xff08;如果表名中包含关键字查询时&#xff0c;需要将其用单引号括起来&#xff09;。 数据库对象的…

vue前期知识点笔记

学习Vue生命周期函数&#xff0c;并且逐个使用&#xff1b; 用路由完成视图的切换&#xff1b; v-bind和v-mode区别 一个绑定的是尖括号外的&#xff0c;一个绑定的是尖括号里的举例&#xff1a; <img :src"url"><h1 v-model"message">{{me…

ssl提高组周六备考赛【2018.10.27】

前言 高三dalao试图混入其中 成绩 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC1112017myself2017myself2017myself2052052052525258080801001001002222013lyy2013lyy2013lyy2002002001001001007070703030303332015hjw2015hjw2015hjw1201201203030309090900004442…

关于 JVM 内存的 N 个问题

转载自 关于 JVM 内存的 N 个问题 JVM的内存区域是怎么划分的&#xff1f; JVM的内存划分中&#xff0c;有部分区域是线程私有的&#xff0c;有部分是属于整个JVM进程&#xff1b;有些区域会抛出OOM异常&#xff0c;有些则不会&#xff0c;了解JVM的内存区域划分以及特征&am…

RedHat宣布支持Azure、.Net Core 2.0和SQL Server 2017

近期&#xff0c;Microsoft和RedHat宣布支持在Red Hat OpenShift上运行Windows容器。此次宣布所针对的主要场景&#xff0c;是让Linux和Windows容器工作于同一集群中。这将使具有混杂环境的企业无需分别运行Windows集群和Linux集群&#xff0c;企业可以迁移到基于容器的同一种架…

安装webpack

全局安装 npm install -g webpack 项目中安装 npm install --save-dev webpack 安装webpack遇到个坑&#xff0c;问题的话应该是项目使用的是webpack2.X版本&#xff0c;这样就会覆盖之前的版本&#xff0c;导致项目配置错误。 所以最好不要用全局安装 cd进相关文件夹后 cnpm …

如何求解两个数的最大公约数

#include <iostream> using namespace std; //暴力法求解最大公约数 int main() {int m,n,t;cout<<"请输入两个整数&#xff1a;";cin>>m>>n;if(m<n){int tempm;mn;ntemp;}for(int in;i>1;i--){if(m%i0&&n%i0){ti;break;}}cou…

【附答案】Java面试2019常考题目汇总(一)

转载自 【附答案】Java面试2019常考题目汇总&#xff08;一&#xff09; 一、JAVA基础篇-概念 1.简述你所知道的Linux&#xff1a; Linux起源于1991年&#xff0c;1995年流行起来的免费操作系统&#xff0c;目前&#xff0c; Linux是主流的服务器操作系统&#xff0c; 广泛…