Code:

#include<cstdio>
#include<cstring>
#include<string>
#include<stack>
#include<algorithm>
#include<vector>
using namespace std;
void setIO(string a){
freopen((a+".in").c_str(),"r",stdin);
freopen((a+".out").c_str(),"w",stdout);
} const int maxn = 5009;
int low[maxn], pre[maxn], idx[maxn], A[maxn], B[maxn], ab;
bool is[maxn][maxn];
vector<int>G[maxn], idxx[maxn];
stack<int>S;
int n,m,scc, num;
void addedge(int u,int v){ G[u].push_back(v); }
void tarjan(int u,int fa){
low[u]=pre[u]=++scc;
S.push(u);
for(int i=0;i<G[u].size();++i){
if(G[u][i]==fa) continue;
if(!pre[G[u][i]]) {
tarjan(G[u][i],u);
low[u]=min(low[u],low[G[u][i]]);
}
else if(!idx[G[u][i]]) low[u]=min(low[u],pre[G[u][i]]);
}
if(low[u]==pre[u])
{
++num;
for(;;){
int g=S.top();S.pop();
idxx[num].push_back(g);
idx[g]=num;
if(g==u) break;
}
}
}
int tag[maxn], arr[maxn][maxn], p, current;
void dfs(int u){
arr[current][++p]=u;
tag[u]=1;
int siz=G[u].size();
for(int i=0;i<siz;++i){
if(tag[G[u][i]] || is[u][G[u][i]]) continue;
dfs(G[u][i]);
}
}
int main(){
//setIO("travel");
scanf("%d%d",&n,&m);
for(int i=1;i<=m;++i){
int a,b;
scanf("%d%d",&a,&b);
addedge(a,b);
addedge(b,a);
}
for(int i=1;i<=n;++i){
int siz=G[i].size();
sort(G[i].begin(),G[i].end());
}
tarjan(1,0);
for(int i=1;i<=num;++i){
if(idxx[i].size()>1) {
int siz=idxx[i].size();
for(int j=0;j<siz;++j)
for(int k=j+1;k<siz;++k) A[++ab]=idxx[i][j],B[ab]=idxx[i][k];
break;
}
}
if(ab==0) { dfs(1); for(int i=1;i<=n;++i) printf("%d ",arr[0][i]); return 0;}
for(int i=1;i<=ab;++i){
p=0;
++current;
memset(tag,0,sizeof(tag));
is[A[i]][B[i]]=is[B[i]][A[i]]=1;
dfs(1);
is[A[i]][B[i]]=is[B[i]][A[i]]=0;
}
int cur_best=1;
for(int i=2;i<=current;++i){
for(int j=1;j<=n;++j) if(arr[cur_best][j]!=arr[i][j]){
if(arr[cur_best][j]>arr[i][j]) cur_best=i;
break;
}
}
for(int i=1;i<=n;++i) printf("%d ",arr[cur_best][i]);
printf("\n");
return 0;
}

  

noip 2018 day2 T1 旅行 基环树 tarjan的更多相关文章

  1. noip 2018 Day2 T1 旅行

    暴力删边,暴力枚举 #include <bits/stdc++.h> using namespace std; #define MAXM 5010 inline int read() { ...

  2. P5022 旅行[基环树]

    以后必须学会面向数据编程!看半天题目不知道咋写直接爆搜,结果分少的可怜,还不如直接贪搞个60分. 观察数据,发现图至多存在一个环. 显然,如果没有环,这个题不跟你多bb,直接贪就完事了,线性复杂度. ...

  3. 3730 无线网络发射选址[NOIP 0214 day2 T1]

    3730 无线网络发射选址  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 青铜 Bronze 题解  查看运行结果     题目描述 Description 随着智能手机的日 ...

  4. NOIP 2014 Day2 T1 无线网络发射器

    #include<iostream> #include<cmath> #include<cstdlib> #include<cstdio> #inclu ...

  5. noip 2016 day2 t1组合数问题

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  6. Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1

    3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大. ...

  7. noip 2018 day1 T1 铺设道路 贪心

    Code: #include<cstdio> using namespace std; int main() { int last=0,ans=0; int n;scanf("% ...

  8. [NOIp 2018]all

    Description 题库链接: Day1 T1 铺设道路 Day1 T2 货币系统 Day1 T3 赛道修建 Day2 T1 旅行 Day2 T2 填数游戏 Day2 T3 保卫王国 Soluti ...

  9. NOIP 2018旅行题解

    从佳木斯回来刷一刷去年没A的题 题目描述 小 Y 是一个爱好旅行的 OIer.她来到 X 国,打算将各个城市都玩一遍. 小Y了解到, X国的 nn 个城市之间有 mm 条双向道路.每条双向道路连接两个 ...

随机推荐

  1. gps 地图

    http://www.cnblogs.com/sylvanas2012/p/5342530.html http://blog.csdn.net/ma969070578/article/details/ ...

  2. ASP.NET-ajax.acionlink使用

    Ajax 属性的ActionLink方法可以创建一个具有异步行为的锚标签. ActionLink方法的第一个参数指定了链接文本,第二个参数是要异步调用的操作的名称.类似于同名的HTML辅助方法,AJA ...

  3. STM32中assert_param的使用

    在STM32的固件库和提供的例程中.到处都能够见到assert_param()的使用. 假设打开不论什么一个例程中的stm32f10x_conf.h文件,就能够看到实际上assert_param是一个 ...

  4. Qt5的插件机制(1)--Qt 框架中的插件载入机制概述

    概述 Qt的源代码中通过 Q<pluginType>Factory.Q<pluginType>Plugin 和 Q<pluginType> 这三个类实现了Qt的插件 ...

  5. Querying mergeinfo requires version 3 of the FSFS filesystem schema svn右键没菜单

    svn 报错,Querying mergeinfo requires version 3 of the FSFS filesystem schema 经过查询,是svn客户端和服务端版本不一致造成的. ...

  6. hdoj--5563--Clarke and five-pointed star(简单几何)

    Clarke and five-pointed star Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  7. PostgreSQL Replication之第九章 与pgpool一起工作(2)

    9.2 理解pgpool的功能 pgpool提供了如下功能: •连接池 •语句级别的复制 •负载均衡 •限制连接 •内存缓存 •并行查询 [当决定使用那些功能的时候,记住并非所有的功能可以在同一时间使 ...

  8. 二、Fast-R-CNN

    一.概括 Fast R-cnn的主要亮点有:Fast R-CNN将借助多任务损失函数,将物体识别和位置修正合成到一个网络中,不再对网络进行分步训练,不需要大量内存来存储训练过程中特征的数据:用RoI层 ...

  9. Mac配置PHP环境

    本文章来自:http://blog.csdn.net/wj_november/article/details/51417491 本人使用的是:MacOs 10.12.3,根据如上操作已经安装成功,感谢 ...

  10. letCode(771 Jewels and Stones )

    问题描述: You're given strings J representing the types of stones that are jewels, and S representing th ...