P5022 旅行 (NOIP2018)
先考虑是一颗树的情况
求最小的 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)的更多相关文章
- 【题解】 P5022旅行
[题解]P5022 旅行 当给定你一颗树的时候,这题就是一道送分题,凉心啊! 但是给定你一颗基环树呢? 暴力断环直接跑. 但是数据范围\(n\le 1000\) 乱做就完事了. 考场上这样想的,对于\ ...
- 【luogu P5022 旅行】 题解
题目连接:https://www.luogu.org/problemnew/show/P5022 \(NOIP2018 DAY2T1\) 考场上只写了60分,很容易想到当 m = n - 1 时的树的 ...
- P5022 旅行
原题链接 https://www.luogu.org/problem/P5022 本着快csp了,做点往年的NOIp的题试试水来着,没想到水这么深 难度还挺大的,耗了我一天的时间(可能是我太菜了) ...
- 洛谷 P5022 旅行——题解
发现大部分题解都是O(n^2)的复杂度,这里分享一个O(n)复杂度的方法. 题目传送 首先前60%的情况,图是一棵无根树,只要从1开始DFS,每次贪心走点的编号最小的点就行了.(为什么?因为当走到一个 ...
- 洛谷P5022 旅行 题解 去环/搜索
题目链接:https://www.luogu.org/problem/P5022 这道题目一开始看的时候没有思路,但是看到数据范围里面有一个: \(m = n-1\) 或 \(m = n\) ,一下子 ...
- Luogu P5022 旅行
开始写复赛题了 先放张图纪念我惨烈的卡常之路 不说了,简直悲伤 题目链接 思路么..不想写了 Code //不要在意四十行超级加速,卡常用的 #include<bits/stdc++.h> ...
- P5022 旅行[基环树]
以后必须学会面向数据编程!看半天题目不知道咋写直接爆搜,结果分少的可怜,还不如直接贪搞个60分. 观察数据,发现图至多存在一个环. 显然,如果没有环,这个题不跟你多bb,直接贪就完事了,线性复杂度. ...
- 洛谷P5022 旅行 题解
前面几个代码都是部分分代码,最后一个才是AC了的,所以最后一个有详细注释 安利一发自己的Blog 这是提高组真题,233有点欧拉回路的感觉. 题目大意: 一个 连通 图,双向边 ,无重边 , 访问图中 ...
- Luogu P5022 旅行 搜索+贪心
好吧...一直咕..现在才过...被卡常卡到爆... 写的垃圾版本,$n^2$无脑删边..可以发现走出来的是棵树...更优秀的及数据加强版先咕着...一定写.qwq #include<cstdi ...
随机推荐
- Solr根据参考点的坐标来返回范围内的小区和距离
@Test public void query() throws Exception{ SystemDefaultHttpClient httpClient = new SystemDefaultHt ...
- 超详细的Maven使用教程
原文: http://blog.csdn.net/u010425776/article/details/52027706 主题 Maven 什么是Maven? 如今我们构建一个项目需要用到很多第三方 ...
- struts-hibernate整合(1)配置环境
①加载jar包 创建类库: 在myeclipse中点击windows---Preference---Java---Build Path---User Libraries---new 输入创建类库名字s ...
- Anaconda 安装教程(Win10环境) Tensorflow安装
序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python,比如WinPython.An ...
- 异常 android.content.res.Resources$NotFoundException: String resource ID #0x61
09-09 16:08:41.554: E/Weaver(13140):09-09 16:08:41.554: E/Weaver(13140): android.content.res.Resourc ...
- 【转】webService概述
一.序言: 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是We ...
- Internet Intranet Extranet
Internet: There's only one of it, and you're on it now. Intranet: An internal network local to a com ...
- vue 生命周期小结
生命周期小结生命周期钩子的一些使用方法: beforecreate : 可以在这加个loading事件,在加载实例时触发 created : 初始化完成时的事件写在这里,如在这结束loading事件, ...
- linq组合查询时属性扩展问题
学习linq的过程中,做一个表格的条件查询并且分页显示.显示的出的数据需要经过属性拓展来实现将需要给用户看的值显示出来. 后台绑定数据时用的是上下文---- if(!ispostback){ usin ...
- Entity Framework Tutorial Basics(24):Update Single Entity
Update Existing Entity using DBContext in Disconnected Scenario: In this chapter, you will learn how ...