emmmm....学校的oj被查水表了,扒不到原题面,所以....

但是我还是扒到了题面。。。

题目大意:给定一个完全图,删掉其中一些边,然后求其字典序最小的遍历顺序

有点像去年day2T1啊....

但是数据范围如果建图的话就可以螺旋升天了。

很容易想到建反图(郑州集训233,可是这题不建反图会死)

然后想怎么遍历....

dfs序无疑,但是该怎么....跑这么多呢....

(真的很难想)

solution:

删边。

可以说删边。

既然要求字典序最小,那就给它一个字典序最小:123456789

把所有点先连上,向下跑,判断这两点之间的路有没有被炸掉,要是被炸掉了,就跑到i+2那个点去,然后把路删了,连到下面去。

有些坑人,代码细节不少。

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#define rg register
using namespace std;
inline int read()//怕被卡加的读优
{
int x=,f=;char s=getchar();
while(s>''||s<''){if(s=='-')f=-;s=getchar();}
while(s<=''&&s>=''){x=x*+s-'';s=getchar();}
return x*f;
}
const int maxn=;
int n,m;
vector < int > g[maxn];//无权图用vector存方便
int nxt[maxn];//学校oj卡关键字太狠了
int to[maxn];//辅助删边数组
void dfs(int u)
{
printf("%d\n",u);//走一个输出一个
sort(g[u].begin(),g[u].end());//对炸掉的点排序,方便下面二分查找
nxt[to[u]]=nxt[u];//删边
to[nxt[u]]=to[u];
for(rg int i=nxt[];i<=n;i=nxt[i])
{
if(i!=g[u][lower_bound(g[u].begin(),g[u].end(),i)-g[u].begin()])//找不找得到一个被炸的点与自己相同
{
dfs(i);//向下搜
return;//老子不搜了
}
}
} int main()
{
n=read();m=read();
for(rg int i=;i<=n;i++)
{
nxt[i]=i+;//连一个字典序最小数组
to[i]=i-;//辅助
g[i].push_back();//注意了,如果一个vector里是空的的话,那么sort啊,lower_bound会出事,所以放进去一个无限大
}
nxt[]=; to[]=;
for(rg int i=;i<=m;i++)
{
int x,y;
x=read();y=read();//scanf("%d%d",&x,&y);
g[x].push_back(y);
g[y].push_back(x);//建反图
}
dfs();//字典序最小,肯定是从1开头最小
return ;
}

[LLL邀请赛]参观路线(图论+dfs)的更多相关文章

  1. [bzoj1301] [LLH邀请赛]参观路线

    本题同bzoj1098 用个并查集,把连续的被访问过的点并起来..这样就不会尝试已经走过的点了. #include<cstdio> #include<iostream> #in ...

  2. 参观路线——并查集+dfs

    题目描述 Lambdaland由N个城市组成,任两个城市间都有一条道路相连.  下个月TBL准备参观Lambdaland.他将从城市1开始,以深度优先搜索顺序参观能所有遍历到的城市. 由于TBL是一位 ...

  3. 图论---DFS

    图论---DFS 1. 图的遍历 在理解DFS算法之前,我们首先需要对什么是遍历进行了解,遍历的概念就是:从某一个点出发(一般是首或尾),依次将数据结构中的每一个数据访问且只访问一遍. 2. DFS简 ...

  4. 图论--DFS总结

    1.Key word:①双向DFS  ②回溯 今天就看到了这么多DFS,其实DFS更倾向于枚举所有情况. 对于双向DFS,我们考虑看看最短路,起点做一下搜索,记录一下到所有点的距离,终点做一下搜索,记 ...

  5. 【做题】Codeforces Round #436 (Div. 2) F. Cities Excursions——图论+dfs

    题意:给你一个有向图,多次询问从一个点到另一个点字典序最小的路径上第k个点. 考虑枚举每一个点作为汇点(记为i),计算出其他所有点到i的字典序最小的路径.(当然,枚举源点也是可行的) 首先,我们建一张 ...

  6. Luogu P2149 [SDOI2009]Elaxia的路线 | 图论

    题目链接 题解: 题面中给了最简洁清晰的题目描述:"求无向图中,两对点间最短路的最长公共路径". 对于这个问题我们可以先考虑图中的哪些边对这两对点的最短路产生了贡献. 比如说下面这 ...

  7. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  8. HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. URAL 1137Bus Routes (dfs)

    Z - Bus Routes Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

随机推荐

  1. python编程基础之二十九

    栈和队列: 栈:先进后出,其他没多少特别之处了,一般可以用列表模拟栈,也可以用双端队列,封死一端. 队列:先进先出,也可以用列表模拟,但是一般用库函数,需要导collections 包:主要是为了解决 ...

  2. 为什么那么多自学JAVA的后来都放弃了?总结起来就这些原因

    目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Java开发. 目前来讲市场上需要的Java人员非 ...

  3. django开发中关于外键设置

    django开发中关于外键设置 我们建模型的时候会用到ForeignKey 而由于外键的约数会导致一些保存 所有我们ctrl+左键进入源码 源码 def __init__(self, to, on_d ...

  4. Web安全之爆破中的验证码识别~

    写爆破靶场的时候发现对于爆破有验证码的有点意思~这里简单总结下我们爆破有验证码的场景中几种有效的方法~~~ 0x01 使用现成工具 这里有pkav团队的神器PKAV HTTP Fuzzer 1.5.6 ...

  5. Kali升级2018&&2019

    0X01修改更新源 vim /etc/apt/sources.list #中科大 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-f ...

  6. CSS中各种布局的背后(*FC)

    CSS中各种布局的背后,实质上是各种*FC的组合.CSS2.1中只有BFC和IFC,CSS3 中还增加了FFC和GFC. 盒模型(BoxModel) 上图为W3C标准盒模型,另外还有一种IE盒模型(I ...

  7. VoodooPad Mac笔记本

    VoodooPad Mac笔记本 VoodooPad是记录您的笔记和想法的地方.想法,图片,列表,密码和妈妈的苹果派食谱.包括您需要跟踪和组织的所有内容,VoodooPad会与您一起成长而不会妨碍您. ...

  8. 图像配准SIFT

    (一)图像特征匹配--SIFT 1.1 SIFT背景简介 SIFT算法是David Lowe在1999年提出的局部特征描述子,并在2004年深入发展和完善. SIFT算法是在尺度空间进行特征检测并确定 ...

  9. 基准测试了 ArrayList 和 LinkedList ,发现我们一直用 ArrayList 也是没什么问题的

    ArrayList 应该是 Java 中最常用的集合类型了,以至于我们说到集合就会自然而然的想到 ArrayList.很多同学都没有用过除了 ArrayList 之外的其他集合,甚至于都已经忘了除了 ...

  10. Servlet处理原生Ajax请求

    萌新小白人生中的第一篇博客,难免会有差错,还望各位大佬多多包涵. 1. Ajax技术简介      Ajax(Asynchronous JavaScript and XML,异步JavaScript和 ...