题目链接

http://codeforces.com/gym/100781/attachments

题意:给出n个点,m条边,问加一些边使所有点都能相互走通,问所有方案中最大距离的最小值是多少

树形dp,分别求出任意一个联通块中两点之间的最大距离,所以他们的半径变为(直径+1)/2,取所有联通块中距离最大的两个半径,再和连通图本身的最大值进行比较

#include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf -0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
typedef long long ll;
const int maxn=100000+1000;
int a[maxn],vis[maxn],vis1[maxn],minv,head[maxn],tot,T;
struct Edge{int to,next;
}e[2*maxn];
void init(int n){tot=0,T=0;mem1(head),mem0(a),mem0(vis1),mem0(vis);
}
void addedge(int u,int v){e[tot].to=v,e[tot].next=head[u],head[u]=tot++,e[tot].to=u,e[tot].next=head[v],head[v]=tot++;
}
bool cmp(int u,int v){return u>v;
}
struct node{int u,dep;
};
node bfs(int u,int dep){queue<node>q;q.push((node){u,dep});vis[u]=T;int end1=u,count1=0;while(!q.empty()){node ans=q.front();q.pop();int u=ans.u,dep=ans.dep;for(int i=head[u];i!=-1;i=e[i].next){int v=e[i].to;if(vis[v]!=T){q.push((node){v,dep+1});vis[v]=T,end1=v,count1=dep+1;}}}node b={end1,count1};return b;
}
int main(){int n,m,u,v;while(scanf("%d%d",&n,&m)!=EOF){init(n);for(int i=0;i<m;i++){scanf("%d%d",&u,&v);u++,v++,vis1[u]=1,vis1[v]=1;addedge(u,v);}int cnt=0,minv=0,flag=0;for(int i=1;i<=n;i++){if(vis[i]==0&&vis1[i]!=0){++T;    //注意这里要先++T,使得T不为0node b=bfs(i,0);++T;node c=bfs(b.u,0);minv=max(minv,c.dep);a[cnt++]=(c.dep+1)/2;flag=1;}}sort(a,a+cnt,cmp);if(n<=2)printf("%d\n",n-1>=0?n-1:0);else if(flag==0)        //如果有n个连通块printf("2\n");else if(cnt>=3&&(a[0]==a[1])&&(a[1]==a[2]))printf("%d\n",max(minv,a[0]+a[1]+2));elseprintf("%d\n",max(minv,a[0]+a[1]+1));}return 0;
}

NCPC 2015 A Adjoin the Networks(好题)相关推荐

  1. 计算机一级考试模拟题函数,2015年计算机一级考试模拟题(四)

    2015年计算机一级考试模拟题(四) 请用Word 2003对考生文件夹下WORD.DOC文档中的文字进行编辑.排版和保存,具体要求如下: (1)将标题段("十年后的家电")文字设 ...

  2. 职称计算机word模拟题,2015职称计算机考试Word2003模拟题及答案

    1. Word程序启动后就自动打开一个名为(D )的文档. A)Noname B)Untitled C)文件1 D)文档1 2. 可以显示水平标尺和垂直标尺的视图方式是( B ). A)普通视图 B) ...

  3. xp职称计算机考试题库,2015年职称计算机考试XP题库.doc

    2015年职称计算机考试XP题库.doc (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 2015年职称计算机考试XP题库职称计算机 ...

  4. 2015大学计算机二级考试,2015年计算机二级考试模拟题(一)

    2015年计算机二级考试模拟题(一) 一.选择题(每小题1分,共20分) (1)现代微型计算机中所采用的电子元器件是 A)电子管 B)晶体管 C)小规模集成电路 D)大规模和超大规模集成电路 (2)从 ...

  5. 2015计算机二级c语言题库,2015年计算机二级C语言题库找题目录

    2015年计算机二级C语言题库找题目录 找题目录 第01套:int fun(___1___ *std) 第02套:void WriteText(FILE ___1___) 第03套: fprintf( ...

  6. 2015年华为实习生机试样题(记票统计,计算麻将的番数,Word Maze(单词迷宫))

    这是华为今年实习生招聘给的样题,还是特别喜欢考字符串处理问题. 记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B" ...

  7. 【软考软件评测师】2015年下案例分析历年真题

    [软考软件评测师]2015年下案例分析历年真题 2015下案例分析历年真题 [软考软件评测师]2015年下案例分析历年真题 2015下案例分析历年真题第一题(15分) 2015下案例分析历年真题第二题 ...

  8. 问题 1825: [蓝桥杯][2015年第六届真题]穿越雷区

    问题 1825: [蓝桥杯][2015年第六届真题]穿越雷区 时间限制: 1Sec 内存限制: 128MB 提交: 310 解决: 211 题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区 ...

  9. 2015年考研英语二真题

    2015年考研英语二真题  

  10. 【读书笔记】2015年考研英语二真题翻译(帮你克服艰难之路的真理+熟路效应)

    本文来自考研英语二2015年真题中的Section II Part B以及Section III的两篇文章.本人觉得这两篇文章比较有意义,故将张剑黄皮书上的翻译搬运过来.本文来自考研英语二2015年真 ...

最新文章

  1. 从入门到精通聊聊区块链
  2. HALCON示例程序dem_trees.hdev提取树
  3. 程 序 测 试 规 范
  4. 传智Python视频_基础班+就业班
  5. 你现在可以使用的10个JavaScript代码段
  6. 前篇|信贷监控报表的设计
  7. 查看计算机win多少位的,主编教您怎么看电脑是32位还是64位
  8. 浅谈缓存-注解驱动的缓存 Spring cache介绍
  9. 数码管显示原理——MCU51
  10. iOS 开发:『Runtime』详解(二)Method Swizzling
  11. 【例题】【高斯消元】USACO3.2.4 Feed Ratios
  12. iOS App各种路径
  13. 常见的网站攻击以及如何防御自己的网站被恶意攻击
  14. FTP与TFTP介绍
  15. A Game of Thrones(30)
  16. 计算机网络技术(二)——数据通信
  17. java实现分布式项目搭建的方法
  18. Pascal's Triangle帕斯卡三角形算法
  19. DNS(域名系统)详解
  20. Android定位,百度SDK,百度定位

热门文章

  1. 计算机无法添加打印机,电脑无法添加网络打印机,怎么办?
  2. Juypter Notebook 的安装、配置、部署
  3. quast 的结果怎么看_使用quast评估基因组装配的质量
  4. 十、Linux开发板控制LED灯设备
  5. 企业选人的三个阶段和几个标准
  6. 怀旧服务器联盟优势,魔兽世界tbc联盟服务器选哪个_wowtbc怀旧服联盟服务器排名_3DM网游...
  7. 避免选中页面文字或者内容时出现蓝色背景
  8. 外卖小程序对接飞鹅小票打印的实现
  9. 信息收集总结(基本信息搜集思路)
  10. 页面中插入视频的方法---video/embed/iframe总结