做法

把环找出来,如果在环上(u,v)两点的时候,u的其他子树都走完了,v上第一个还有除v存在的子树没走完的 祖先,祖先的最小子节点小于v,则回去

Code

#include<bits/stdc++.h>
typedef int LL;
const LL maxn=1e6+9,inf=0x3f3f3f3f;
inline LL Read(){
LL x(0),f(1); char c=getchar();
while(c<'0' || c>'9'){
if(c=='-') f=-1; c=getchar();
}
while(c>='0' && c<='9'){
x=(x<<3)+(x<<1)+c-'0'; c=getchar();
}return x*f;
}
struct node{
LL to,nxt;
}dis[maxn<<1];
LL n,m,num,top,op;
LL head[maxn],visit[maxn],vis[maxn],sta[maxn],ans[maxn],size[maxn];
std::vector<LL> G[maxn];
inline void Add(LL u,LL v){
dis[++num]=(node){v,head[u]}; head[u]=num;
}
LL Dfs1(LL u,LL fa){
visit[u]=true; sta[++top]=u;
for(LL i=0;i<G[u].size();++i){
LL v(G[u][i]); if(v==fa) continue;
if(visit[v]){
LL nw; //printf("%d\n",u);
do{
nw=sta[top--]; vis[nw]=1;
}while(nw!=v);
return true;
}
if(Dfs1(v,u)) return true;
}
--top;
return false;
}
void Dfs2(LL u,LL mi){
visit[u]=1; ans[++top]=u; LL tmp(inf);
if(vis[u] && !op){
LL i(0);
for(;i<G[u].size();++i){
if(visit[G[u][i]]) continue;
if(vis[G[u][i]]) break;
}
for(++i;i<G[u].size();++i){
if(visit[G[u][i]]) continue;
tmp=std::min(tmp,G[u][i]);
}
}
if(tmp==inf) tmp=mi;
for(LL i=0;i<G[u].size();++i){
LL v(G[u][i]); if(visit[v]) continue;
if(!op && vis[u] && vis[v] && v>tmp){
op=1; continue;
}
Dfs2(v,tmp);
}
}
int main(){
n=Read(); m=Read();
for(LL i=1;i<=m;++i){
LL u(Read()),v(Read());
G[u].push_back(v); G[v].push_back(u);
}
for(LL i=1;i<=n;++i) std::sort(G[i].begin(),G[i].end());
Dfs1(1,0);
memset(visit,0,sizeof(visit)); top=0;
Dfs2(1,inf);
for(LL i=1;i<=n;++i) printf("%d ",ans[i]);
return 0;
}

最新文章

  1. Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
  2. [BZOJ1528][POI2005]sam-Toy Cars(贪心)
  3. MyBatis学习--简单的增删改查
  4. 移动端web页面如何适配
  5. ping: sendto: Network is unreachable
  6. sell- 获取邮箱的后缀
  7. 《jQuery风暴》第2章 必须知道的JavaScript知识
  8. ubuntu设置ip和dns
  9. c++面试常见160问
  10. hdu 5073 Galaxy(2014acm鞍山亚洲分部 C)
  11. 在Installshield的安装进度中显示自己设置的信息
  12. 剑指架构师系列-ftp服务器
  13. (二)初探Maven之设置代理和阿里云镜像
  14. js 创建标签执行
  15. 批量生成QRcode
  16. springMVC学习 六 跳转方式
  17. 转:zTree树控件扩展篇:巧用zTree控件实现文本框输入关键词自动模糊查找zTree树节点实现模糊匹配下拉选择效果
  18. flexbox子盒子order属性
  19. configure: error: png.h not found.
  20. 基础dp例题整理

热门文章

  1. winform实现图片的滑动效果
  2. mysql的安装,启动,和基础配置 -----windows版本
  3. spring boot 简要常用配置
  4. jenkins节点添加
  5. Win10-安装.net 2,3,.3.5
  6. c# IEnumerable集合
  7. 深度学习 吴恩达深度学习课程2第三周 tensorflow实践 参数初始化的影响
  8. P3119 [USACO15JAN]草鉴定[SCC缩点+SPFA]
  9. Shell排序——软考(五)
  10. Handling skewed data---Error metrics for skewed(偏斜的) classes(precision&amp;recall)