【DFS】Gym - 100781A - Adjoin the Networks
给你一个森林,让你把它连接成一颗树,使得直径最小。
就求出每颗树的重心以后,全都往直径最大的那个的重心上连,一般情况是最大/2+次大/2+1,次大/2+第三大/2+2 中取较大者。
还有些特殊情况要特判处理一下。
#include<cstdio>
#include<algorithm>
using namespace std;
int v[200010],first[100010],next[200010],e;
void AddEdge(int U,int V){v[++e]=V;next[e]=first[U];first[U]=e;
}
int n,m;
int S1;
bool vis[100010],vis2[100010];
int maxD;
void dfs(int U,int d){vis[U]=1;if(d>maxD){maxD=d;S1=U;}for(int i=first[U];i;i=next[i]){if(!vis[v[i]]){dfs(v[i],d+1);}}
}
void df2(int U,int d){vis2[U]=1;maxD=max(maxD,d);for(int i=first[U];i;i=next[i]){if(!vis2[v[i]]){df2(v[i],d+1);}}
}
int b[100010],be;
int main(){
// freopen("a.in","r",stdin);int x,y;scanf("%d%d",&n,&m);if(n==1){puts("0");return 0;}if(n==2){puts("1");return 0;}for(int i=1;i<=m;++i){scanf("%d%d",&x,&y);++x;++y;AddEdge(x,y);AddEdge(y,x);}for(int i=1;i<=n;++i){if(!vis[i]){maxD=0;dfs(i,0);maxD=0;df2(S1,0);b[++be]=maxD;}}sort(b+1,b+be+1);int tmp=max(2,max(b[be]/2+b[be]%2+b[be-1]/2+b[be-1]%2+(be!=1),b[be]));if(be>=3){tmp=max(tmp,b[be-2]/2+b[be-2]%2+b[be-1]/2+b[be-1]%2+2);}printf("%d\n",tmp);return 0;
}
转载于:https://www.cnblogs.com/autsky-jadek/p/7219592.html
【DFS】Gym - 100781A - Adjoin the Networks相关推荐
- Bailian2815 城堡问题【DFS】
2815:城堡问题 总时间限制: 1000ms 内存限制: 65536kB 描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | ...
- Bailian2816 红与黑【DFS】
2816:红与黑 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动.请写一 ...
- NUC1158 Lake Counting【DFS】
Lake Counting 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 Due to recent rains, water has pooled ...
- NUC1399 Sum It Up【DFS】
Sum It Up 时间限制: 1000ms 内存限制: 65535KB 通过次数: 1总提交次数: 1 问题描述 Given a specified total t and a list of n ...
- 【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五]gym搭建自 ...
- CSI笔记【6】:Guaranteeing spoof-resilient multi-robot networks论文阅读
CSI笔记[6]:Guaranteeing spoof-resilient multi-robot networks论文阅读 Abstract 1 Introduction 1.1 Contribut ...
- 【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!
相关文章: [一]gym环境安装以及安装遇到的错误解决 [二]gym初次入门一学就会-简明教程 [三]gym简单画图 [四]gym搭建自己的环境,全网最详细版本,3分钟你就学会了! [五]gym搭建自 ...
- HDU1181 变形课【DFS】(废除)
新题解参见:HDU1181 变形课[DFS+关系闭包+bitset] 变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 13107 ...
- [论]【DSTGCN】Dynamic SpatiotemporalGraph Convolutional Neural Networks for Traffic Data Imputation
Dynamic Spatiotemporal Graph Convolutional Neural Networks for Traffic Data Imputation with Complex ...
- 【DFS】巧妙取量的倒油问题
题目描述 [题目描述] 有三个容器,容量分别为 a,b,c(a> b > c ),一开始a装满油,现在问是否只靠abc三个容器量出k升油.如果能就输出"yes",并且 ...
最新文章
- js 地址的封装以及地址栏的参数获取
- ReduceTask工作机制
- python在中小学教学中的应用-为什么越来越多人学习python?中小学都要开始了?...
- 3D手势姿态跟踪算法:手机端实时检测,多个手势同时捕捉
- android运营商获取本机号码_一键登录已成大势所趋,Android端操作指南来啦!
- MySQL基本语句和连接字符串
- [swift] LeetCode 104. Maximum Depth of Binary Tree
- 比赛结果展示时,某些文字过长,如何使其换行又不影响美观?
- 工厂模式的三张类图(一目了然)
- CPC客户端打开报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- Linux下运行黑客帝国屏保
- 面象对象的系统设计之一
- todo已完成任务_总结一下TODO的用法
- 针式PKM初级应用:针式PKM更适合管理什么样的文件
- ffmpeg视频剪辑视频长度问题,视频无声音,视频卡顿问题
- 企业工程项目管理系统平台(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
- python派森编程软件_《派森》(Python)
- Linux 条件变量 pthread_cond_wait
- 小米官网首屏纯css代码
- how2j:JAVA学习笔记——DAY 9