题意:

  连通则输出最深点。第一步找某个点的最深的,然后从这个最深的点查找其他最深点,做并集。

  不连通则输出连通图个数。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<set>
#include<vector>
#include<cstring>
#include<iterator>
#include<algorithm>
using namespace std;
#define N (10010) int n;
vector<int> vcMap[N];
bool bVis[N] = {};
int maxLen = ;
set<int> setRes;
set<int> setRes2;
set<int> setRes3;
void dfs(int curI,int iLen)
{
bVis[curI] = ;
++iLen;
if(iLen > maxLen)
{
setRes.clear();
maxLen = iLen;
setRes.insert(curI);
}
else if(iLen == maxLen)
{
setRes.insert(curI);
}
for(int i=;i<vcMap[curI].size();++i)
{
if(!bVis[vcMap[curI][i]])
dfs(vcMap[curI][i],iLen);
}
}
int main()
{
scanf("%d",&n);
for(int i=;i<n-;++i)
{
int a,b;
scanf("%d%d",&a,&b);
vcMap[a].push_back(b);
vcMap[b].push_back(a);
}
int k=;
for(int i=;i<=n;++i)
{
if(!bVis[i])
{
++k;
dfs(i,);
set_union(setRes.begin(), setRes.end(), setRes2.begin(),
setRes2.end(), inserter(setRes2, setRes2.begin()));
}
}
if(k==)
{
for(int i=;i<=n;++i)
{
if(setRes2.find(i)!=setRes2.end())
{
memset(bVis,,sizeof(bVis));
dfs(i,);
break;
}
}
set_union(setRes.begin(), setRes.end(), setRes2.begin(),
setRes2.end(), inserter(setRes2, setRes2.begin()));
set<int>::iterator it = setRes2.begin();
for(;it != setRes2.end();it++)
printf("%d\n",*it);
}
else
printf("Error: %d components\n",k);
return ;
}

最新文章

  1. vs 2015 &quot;加载该页时出错。&quot; 解决方案
  2. 洛谷 P1007 独木桥
  3. 以forin的方式遍历数组时进行删除操作的注意点
  4. 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
  5. 分享自制的13套 JQuery Mobile 界面主题(追加4套新款)
  6. Electro桌面应用开发之HelloWorld
  7. linux下(Ubuntu、centos)添加永久静态路由的方法
  8. leetcode 101 Symmetric Tree ----- java
  9. bug - colorWithPatternImage:
  10. jQuery+Ajax+PHP+Mysql实现分页显示数据
  11. OS-MAC: An Efficient MAC Protocol for Spectrum-Agile Wireless Networks
  12. IOS开发中如何给UIImageView添加点击事件
  13. js运算
  14. Linux学习历程——SUID、SGID、SBIT简介
  15. 为什么预处理和参数化查询可以防止sql注入呢?
  16. Mysql监控调优
  17. PHP设计模式单例模式的继承实现
  18. window.name实现跨域
  19. idea创建文件类型失败(xml之类的失效
  20. [USACO 2018 Jan Gold] Tutorial

热门文章

  1. Vue中对获取的数据进行重新排序
  2. 【Python】python扩展
  3. C++虚函数表剖析
  4. 新IOS编程语言 Swift 新编译器Xcode6
  5. python爬虫实践
  6. Maven手工安装jar包到本地仓库
  7. 在C++代码中调用L脚本语言
  8. Codeforces Beta Round #96 (Div. 1) C. Logo Turtle DP
  9. Struts数据验证
  10. 嵌入式Linux系统---ppp拨号,4G模块上网【转】