P5022 旅行[基环树]
以后必须学会面向数据编程!看半天题目不知道咋写直接爆搜,结果分少的可怜,还不如直接贪搞个60分。
观察数据,发现图至多存在一个环。
显然,如果没有环,这个题不跟你多bb,直接贪就完事了,线性复杂度。
原因十分显然,一旦你还没走到底就往回走的话,就走不完整张图了。
有环的话,这题就是个基环树。
根据题意,小Y显然是不能走完一个环的,那就简单了,直接删边开搞。
参考代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
#define N 5010
#define MOD 2520
#define E 1e-12
using namespace std;
inline int read()
{
int f=1,x=0;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
return x*f;
}
int n,m;
vector<int> g[N],ans,tmp;
int stack[N],top;
bool v[N],vis[N][N],flag;
inline void upd()
{
for(int j=0;j<tmp.size();++j){
if(tmp[j]>ans[j]) break;
if(tmp[j]<ans[j]){
ans.clear();
for(int i=0;i<tmp.size();++i)
ans.push_back(tmp[i]);
}
}
tmp.clear();
}
inline void dfs2(int x,int fa)
{
tmp.push_back(x);
for(int i=0;i<g[x].size();++i){
int y=g[x][i];
if(y==fa||vis[x][y]) continue;
dfs2(y,x);
}
}
inline void dfs1(int x,int fa)
{
v[x]=1;stack[++top]=x;
for(int i=0;i<g[x].size();++i){
int y=g[x][i];
if(y==fa) continue;
if(v[y]){
int tmp=stack[top];
vis[tmp][y]=vis[y][tmp]=1;
dfs2(1,0);
vis[tmp][y]=vis[y][tmp]=0;upd();
while(tmp!=y){
int pre=stack[--top];
vis[tmp][pre]=vis[pre][tmp]=1;
dfs2(1,0);
vis[tmp][pre]=vis[pre][tmp]=0;
upd();tmp=pre;
}
for(int i=0;i<ans.size();++i)
printf("%d ",ans[i]);
exit(0);
}
else dfs1(y,x);top--;
}
}
int main()
{
n=read(),m=read();
for(int i=1;i<=m;++i){
int u=read(),v=read();
g[u].push_back(v),g[v].push_back(u);
}
for(int i=1;i<=n;++i) sort(g[i].begin(),g[i].end());
ans.push_back(INF);
dfs1(1,0);
if(!flag) dfs2(1,0);upd();
for(int i=0;i<ans.size();++i)
printf("%d ",ans[i]);
return 0;
}
P5022 旅行[基环树]的更多相关文章
- noip 2018 day2 T1 旅行 基环树 tarjan
Code: #include<cstdio> #include<cstring> #include<string> #include<stack> #i ...
- 【题解】 P5022旅行
[题解]P5022 旅行 当给定你一颗树的时候,这题就是一道送分题,凉心啊! 但是给定你一颗基环树呢? 暴力断环直接跑. 但是数据范围\(n\le 1000\) 乱做就完事了. 考场上这样想的,对于\ ...
- D4 树的直径、重心以及基环树
第一题第二题鉴上我前几篇博客poj1985 poj1849:https://www.cnblogs.com/Tyouchie/p/10384379.html 第三题:数的重心:poj1655 来自sj ...
- P5022 旅行
原题链接 https://www.luogu.org/problem/P5022 本着快csp了,做点往年的NOIp的题试试水来着,没想到水这么深 难度还挺大的,耗了我一天的时间(可能是我太菜了) ...
- 【BZOJ1791】【IOI2008】【基环树】island(status第一速度)
1791: [Ioi2008]Island 岛屿 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 908 Solved: 159 [Su ...
- 【BZOJ3531】旅行(树链剖分,线段树)
[BZOJ3531]旅行(树链剖分,线段树) 题面 Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教 ...
- B20J_3231_[SDOI2014]旅行_树链剖分+线段树
B20J_3231_[SDOI2014]旅行_树链剖分+线段树 题意: S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,城市信仰不同的宗教,为了方便,我们用不同的正整数代表各种宗教. S国 ...
- 『Island 基环树直径』
Island(IOI 2008) Description 你准备浏览一个公园,该公园由 N 个岛屿组成,当地管理部门从每个岛屿 i 出发向另外一个岛屿建了一座长度为 L_i 的桥,不过桥是可以双向行走 ...
- 【BZOJ4883】 [Lydsy1705月赛]棋盘上的守卫(最小生成树,基环树)
传送门 BZOJ Solution 考虑一下如果把行,列当成点,那么显然这个东西就是一个基环树对吧. 直接按照\(Kruscal\)那样子搞就好了. 代码实现 代码戳这里
随机推荐
- Python(二)Marshmallow 库相关学习
0. 前言 Marshmallow 是一个用于将 ORM 对象与 Python 原生数据类型之间转换的库.实现 object → dict.object → list.string → dict 和 ...
- Shell脚本之三 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- 实例 向脚本传递三个参数,并分 ...
- 《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本
<Linux就该这么学>培训笔记_ch04_Vim编辑器与Shell命令脚本 文章最后会post上书本的笔记照片. 文章主要内容: Vim编辑器 Shell脚本 流程控制语句 if语句 f ...
- pandas 获取不符合条件的dataframe
pandas 获取不符合条件的dataframe 或将其过滤掉: df[df["col"].str.contains('this'|'that')==False] >> ...
- ORM之模型对象Model
模型对象Model Odoo的模型对象在odoo模块的models.py文件中,最基础的对象是BaseModel; Odoo的模型对象有三个:AbstractModel.Model.Transient ...
- thinkphp5用了哪些设计模式
一.设计模式简介 首先我们来认识一下什么是设计模式:设计模式是一套被反复使用.容易被他人理解的.可靠的代码设计经验的总结.设计模式不是Java的专利,我们用面向对象的方法在PHP里也能很好的使用23种 ...
- 部署elasticsearch(三节点)集群+filebeat+kibana
用途 ▷ 通过各个beat实时收集日志.传输至elasticsearch集群 ▷ 通过kibana展示日志 实验架构 名称:IP地址:CPU:内存 kibana&cerebro:192.168 ...
- J2EE 练习题 - JSON HTTP Service
J2EE 练习题 - JSON HTTP Service 1 要求 2 示例代码 2.1 Server 端 2.2 客户端 - Java 1 要求 在 Tomcat 上布署一个 HTTP Servic ...
- Web前端推荐学习站点
http://javascript.ruanyifeng.com/ JavaScript参考标准教程,写的很不错. https://www.xiaohuochai.cc/ 小火柴前端站 http ...
- Restart container within pod
https://stackoverflow.com/questions/46123457/restart-container-within-pod 命令 kubectl exec -it [POD_N ...