传送门

先考虑是一颗树的情况

求最小的 dfs 序

显然按儿子编号从小到大dfs

如果有多一条边怎么办

显然会有一条边不用走

直接枚举删那条边然后每次都暴力 dfs

复杂度 $O(n^2)$

注意每个节点的儿子顺序先预处理好

不要每次都重新算

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=;
int fir[N],from[N<<],to[N<<],cntt;//存排序前的边
inline void add(int &a,int &b)
{
from[++cntt]=fir[a];
fir[a]=cntt; to[cntt]=b;
}
int n,m,ans[N];
vector <int> v[N];//存排序后的边
int st[N],t,p1,p2;
bool vis[N];
void dfs(int x)//暴力dfs求字典序
{
st[++t]=x; vis[x]=;
int len=v[x].size();
for(int i=;i<len;i++)
{
int &to=v[x][i]; if(vis[to]||(p1==x&&p2==to)||(p1==to&&p2==x)) continue;
dfs(to);
}
}
inline bool pd()//暴力比较字典序大小
{
if(t<n) return ;
if(!ans[]) return ;
for(int i=;i<=n;i++)
if(ans[i]!=st[i])
return ans[i]<st[i] ? : ;
}
int e[N][],tmp[N],tot;
int main()
{
freopen("travel.in","r",stdin);
freopen("travel.out","w",stdout);
int a,b;
n=read(); m=read();
for(int i=;i<=m;i++)
{
a=read(); b=read();
add(a,b); add(b,a);
e[i][]=a; e[i][]=b;
}
for(int i=;i<=n;i++)//预处理儿子顺序
{
tot=;
for(int j=fir[i];j;j=from[j]) tmp[++tot]=to[j];
sort(tmp+,tmp+tot+);
for(int j=;j<=tot;j++) v[i].push_back(tmp[j]);
}
if(m==n-)
{
dfs();
for(int i=;i<=n;i++) printf("%d ",st[i]);
return ;
}
for(int i=;i<=m;i++)
{
t=; p1=e[i][]; p2=e[i][];//暴力删边
for(int i=;i<=n;i++) vis[i]=;
dfs();
if(pd()) for(int i=;i<=n;i++) ans[i]=st[i];
}
for(int i=;i<=n;i++) printf("%d ",ans[i]);
return ;
}

P5022 旅行 (NOIP2018)的更多相关文章

  1. 【题解】 P5022旅行

    [题解]P5022 旅行 当给定你一颗树的时候,这题就是一道送分题,凉心啊! 但是给定你一颗基环树呢? 暴力断环直接跑. 但是数据范围\(n\le 1000\) 乱做就完事了. 考场上这样想的,对于\ ...

  2. 【luogu P5022 旅行】 题解

    题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的 ...

  3. P5022 旅行

    原题链接  https://www.luogu.org/problem/P5022 本着快csp了,做点往年的NOIp的题试试水来着,没想到水这么深 难度还挺大的,耗了我一天的时间(可能是我太菜了) ...

  4. 洛谷 P5022 旅行——题解

    发现大部分题解都是O(n^2)的复杂度,这里分享一个O(n)复杂度的方法. 题目传送 首先前60%的情况,图是一棵无根树,只要从1开始DFS,每次贪心走点的编号最小的点就行了.(为什么?因为当走到一个 ...

  5. 洛谷P5022 旅行 题解 去环/搜索

    题目链接:https://www.luogu.org/problem/P5022 这道题目一开始看的时候没有思路,但是看到数据范围里面有一个: \(m = n-1\) 或 \(m = n\) ,一下子 ...

  6. Luogu P5022 旅行

    开始写复赛题了 先放张图纪念我惨烈的卡常之路 不说了,简直悲伤 题目链接 思路么..不想写了 Code //不要在意四十行超级加速,卡常用的 #include<bits/stdc++.h> ...

  7. P5022 旅行[基环树]

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

  8. 洛谷P5022 旅行 题解

    前面几个代码都是部分分代码,最后一个才是AC了的,所以最后一个有详细注释 安利一发自己的Blog 这是提高组真题,233有点欧拉回路的感觉. 题目大意: 一个 连通 图,双向边 ,无重边 , 访问图中 ...

  9. Luogu P5022 旅行 搜索+贪心

    好吧...一直咕..现在才过...被卡常卡到爆... 写的垃圾版本,$n^2$无脑删边..可以发现走出来的是棵树...更优秀的及数据加强版先咕着...一定写.qwq #include<cstdi ...

随机推荐

  1. java判断一个字符串中是否包含全角

    public static boolean isAngle(String str){ if(str.getBytes().length==str.length()){ //全是半角 return tr ...

  2. pthon之函数式编程

    函数式编程是一种抽象计算的编程范式. 不同语言的抽象层次不同:计算机硬件->汇编语言->C语言->Python语言 指令        ->           ->函数 ...

  3. linux动态内核模块编程-3

    将一组与模块相关的命令加载进内核 完成功能类似2,打印proc下的相关信息.但是不用重新编译内核,节省时间,更为灵活 内核模块介绍 模块是在内核空间运行的程序,实际上是一种目标文件,不能单独运行但其代 ...

  4. python爬虫实战(2)--爬取百度贴吧

    本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 先观察百度贴吧url格式,以中南财经政法大学迎新帖为例,URL我们 ...

  5. day35-hibernate映射 05-Hibernate的一级缓存:快照区

    SessionImpl里面有很多的Java集合,很多java集合才构成了一级缓存.一级缓存里面有一个非常特殊的区域叫做快照区.SessionImpl实现了Session接口,有很多Java集合(包括M ...

  6. cocos2d-js 骨骼动画 3.10

    近期使用了cocos动画中的骨骼动画,这里记录使用的两种方式(3.10版): 一.cocos自带的动画编辑器导出的动画 ccs.armatureDataManager.addArmatureFileI ...

  7. 283E&EZOJ #89 Cow Tennis Tournament

    传送门 分析 我们考虑用所有的情况减去不合法的情况 不难想出所有情况为$C_n^3$ 于是我们考虑不合法的情况 我们知道对于一个不合法的三元组$(a,b,c)$一定是修改后$a<b,b>c ...

  8. linux文件夹删除、创建

    一.删除文件夹 rm -rf ./html2imag 二.创建文件夹 mkdir html2image

  9. java8的十大新特性

    推荐学习的博客: http://blog.csdn.net/renfufei/article/details/24600507/-------讲解的非常通俗易懂 http://blog.csdn.ne ...

  10. WebGoat系列实验AJAX Security

    WebGoat系列实验AJAX Security DOM Injiction 实验对象是一个接受激活密钥后允许你访问的系统,实验目标是尝试将激活按钮变得可以点击. 直接修改页面代码激活按钮,Chrom ...