PAT1021Deepset Root
题意:
连通则输出最深点。第一步找某个点的最深的,然后从这个最深的点查找其他最深点,做并集。
不连通则输出连通图个数。
#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 ;
}
PAT1021Deepset Root的更多相关文章
- Centos 下 mysql root 密码重置
重置mysql密码的方法有很多,官网也提供了很方便的快捷操作办法,可参考资料 resetting permissions .本文重置密码的具体步骤如下: 一.停止MySQL(如果处于运行状态) #se ...
- CentOS7 重置root密码
1- 在启动grub菜单,选择编辑选项启动 2 - 按键盘e键,来进入编辑界面 3 - 找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4 - 现在按下 Con ...
- Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)
忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...
- Atitit godaddy 文件权限 root权限设置
Atitit godaddy 文件权限 root权限设置 1. ubuntu需要先登录,再su切换到root1 2. sudo 授权许可使用的su,也是受限制的su1 3. ubuntu默认吗roo ...
- Mysql 忘记root密码处理办法
一.更改my.cnf配置文件 1.用命令编辑/etc/my.cnf配置文件,即:vim /etc/my.cnf 或者 vi /etc/my.cnf 2.在[mysqld]下添加skip-grant-t ...
- Ubuntu设置root用户登录图形界面
Ubuntu默认的是root用户不能登录图形界面的,只能以其他用户登录图形界面.这样就很麻烦,因为权限的问题,不能随意复制删除文件,用gedit编辑文件时经常不能保存,只能用vim去编辑. 解决的办法 ...
- php利用root权限执行shell脚本
vi /etc/sudoers , 为apache用户赋予root权限,并且不需要密码,还有一步重要的修改(我被困扰的就是这个地方) root ALL=(ALL) ALL apache ALL= ...
- linux下如何添加一个用户并且让用户获得root权限
1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy //修改密码 Changing pass ...
- 如何重置硬盘遭到“损坏”的Linux系统root用户密码
传统印象下Linux是非常坚不可摧的,具有千年不更新,万年不重启的美名.而随着虚拟化的推进,很多跑在虚拟化上的Linux由于先前基础架构的脆弱,变得适应性“越来越不好”,体现在IP存储如果出现节点故障 ...
随机推荐
- uva 1411 Ants (权值和最小的完美匹配---KM算法)
uva 1411 Ants Description Young naturalist Bill studies ants in school. His ants feed on plant-louse ...
- openFileOutput 文件属性设置、主动配置文件的可读写属性及事实上现方式
首先參考 Android 内部存储相关的函数(getCacheDir,getDir, getFileStreamPath,getFilesDir,openFileInput, ...) 1. 用ope ...
- myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
部署 1.选中你要部署的项目,在工具栏找到 Deploy MyEclipse J2EE Project to Server 2.单击Add,即出现例如以下界面.选择对应的Server,要和你在配置to ...
- android学习笔记NO.5
Intent 能够理解为信使 由Intent来协助完毕android各个组件之间的通讯. 感觉基础薄弱就又复习了一遍基础知识,整理了一遍! gen 保存自己主动生成的R资源目录 gen->com ...
- 20170623_oracle_优化与体系结构
一般优化技巧 建议不用"*"代替所有列名 删除所有数据用TRUNCATE代替DELETE 用NOT EXISTS 代替NOT IN 用EXISTS代替IN 用EXISTS代替DIS ...
- JMeter快捷键图标制作 去掉cmd命令窗口
使用jmeter时: 如果使用默认的jmeter.bat启动的话,会出现一个CMD命令窗口之后再会启动jmeter工作界面 直接启用ApacheJMeter.jar文件即可跳过CMD命令窗口启动jme ...
- spring cloud-spring boot 文档信息
官网: spring boot springcloud 学习资源 使用IDEA创建SpringBoot项目 Spring Boot教程https://blog.csdn.net/forezp/arti ...
- ARM+linux系统移植3G拨号上网收发短信(三)【转】
本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099755 一.用text查看模式下面的“发”是指我敲的命令,“收”是指回车后显 ...
- docker 基本指令
sudo docker info 查看docker状态. jiqing@ThinkPad:~$ sudo docker info [sudo] password for jiqing: Contain ...
- HDU 4070 + 赤裸裸的贪心~~
J - Phage War Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Phage ...