T1是欧拉路板子,但我不会,直接爆炸。。

这玩意就是个dfs,但我以前一直以为欧拉路只能$O(nm)$求

今天才知道可以$O(n+m)$

欧拉路判定:

无向:起点终点为奇度点,其余偶度

有向:起点终点出度入度分别差一,其余相等。

欧拉回路类似。

怎么求??

我们可以很容易找到起点。然后由于其他点的度数为偶数,就可以保证进去就一定可以出来。

所以瞎搜就完事,注意到有环套环的情况,我们先把这个点扩展完再把该点入栈。

代码实现很简单:

void dfs(int x)
{
  for(int i=head[x];i;i=nxt[i])
    if(!v[id[i]])
    {
      v[id[i]]=;
      dfs(to[i]);
      s[++top]=id[i];
    }  return ;
}

一点优化:

当前弧优化,注意到有些毒瘤出题人卡这种做法。

因为一个点不止拓展一次,那么复杂度就没有保证了,最简单的数据就是两个点直接连着m条边。

所以有大佬发明了这样一个优化:

一条边被访问过就没用了,所以我们可以直接把表头设为第一个合法的,也就是去除无用状态。

代码:

void dfs(int x)
{
int i=head[x];
while(i)
{
while(i&&v[id[i]]!=) i=nxt[i];
head[x]=i;
if(i)
{
v[id[i]]=;
dfs(to[i]);
s[++top]=id[i];
i=head[x];
}
}
return ;
}

欧拉路&&欧拉回路的更多相关文章

  1. 欧拉路&&欧拉回路 概念及其练习

    欧拉路: 如果给定无孤立结点图G,若存在一条路,经过图中每边一次且仅一次,这条路称为欧拉路: 如果给定无孤立结点图G,若存在一条回路,经过图中每边一次且仅一次,那么该回路称为欧拉回路. 存在欧拉回路的 ...

  2. HDOJ5883(欧拉路)

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  3. HDU 5883 The Best Path (欧拉路或者欧拉回路)

    题意: n 个点 m 条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大. 析:由欧拉路性质,奇度点数量为0或2.一个节点被进一次出一次,度减2,产生一次贡献,因此节点 i 的贡献为 ...

  4. 星际旅行(欧拉路,欧拉回路)(20190718 NOIP模拟测试5)

    瞎搞了一个ans+=du*(du-1)/2 wa20分,好桑心(话外音:居然还有二十分,出题人太周到了) 还是判欧拉路 题解没太仔细想,感觉还是kx的思路明白 具体就是:因为每条边要走两遍,可以把一条 ...

  5. POJ1386Play on Words[有向图欧拉路]

    Play on Words Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11846   Accepted: 4050 De ...

  6. hdu1161 欧拉路

    欧拉路径是指能从一个点出发能够“一笔画”完整张图的路径:(每条边只经过一次而不是点) 在无向图中:如果每个点的度都为偶数 那么这个图是欧拉回路:如果最多有2个奇数点,那么出发点和到达点必定为该2点,那 ...

  7. UVA10054The Necklace (打印欧拉路)

    题目链接 题意:一种由彩色珠子组成的项链.每个珠子的两半由不同的颜色组成.相邻的两个珠子在接触的地方颜色相同.现在有一些零碎的珠子,需要确定他们是否可以复原成完整的项链 分析:之前也没往欧拉路上面想, ...

  8. 洛谷 P1341 无序字母对 Label:欧拉路 一笔画

    题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...

  9. POJ 1637 Sightseeing tour (混合图欧拉路判定)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6986   Accepted: 2901 ...

随机推荐

  1. 294 div2 C. A and B and Team Training

    C. A and B and Team Training 题目:A and B are preparing themselves for programming contests. An import ...

  2. 初识Django,了解一下大概流程

    学习Django一个礼拜了,对其有了一个大概的了解,自己画了一个简单的图,虽然有点丑,但是基本上已经把自己所想已经表达 写完这篇随笔之后发现自己逻辑表述的有点不太清晰,有点乱,哪里不对,希望各位指正 ...

  3. Python高级核心技术97讲 ☝☝☝

    Python高级核心技术97讲  ☝☝☝ Python高级核心技术97讲 系列教程 学习 教程 Python的标准整数类型是最通用的数字类型.在大多数32位机器上,标准整数类型的取值范围是-2**31 ...

  4. Java的IO操作之关闭流

    我们知道,当结束对一个流的操作时,需要调用流的close()方法对其进行释放,这将释放掉与这个流有关的所有资源,包括文件句柄.端口等.如果不关闭流,垃圾回收机制将无法识别你是否已使用完这个文件,读取的 ...

  5. python selenium自动化常用关键字

    工具安装: 1.安装python 2.安装selenium库(dos命令下进入selenium-2.53.2存放路径,执行pip install selenium-2.53.2) 3.将浏览器驱动放到 ...

  6. vue中 props 多层组件嵌套传值

    如:三层嵌套. 父组件=>子组件=>孙子 1. 父组件引用子组件component11 , isShow传值给子组件component11 2. 子组件用  props 接受父组件的值, ...

  7. API---注册表编程

    首先来认识一下键,项,值吧: 左边有五个根键: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USER HKEY_CURREN ...

  8. web安全之XSS基础-常见编码科普

    0x01常用编码 html实体编码(10进制与16进制): 如把尖括号编码[ < ]  -----> html十进制: <  html十六进制:< javascript的八进制 ...

  9. Web渗透之mssql LOG备份getshell

    log备份的总结 当SQL注入是得到DB权限时候,接下来可以做的工作很多,象找管理员密码,后台管理这些都可以帮助你拿到WEBSHELL,但是这篇文章讲的是log备份,LOG备份出来的小马的体积小,而且 ...

  10. 基于powershell的socks代理

    0x01 前言 在实战中,内网的代理尤其重要,而常见的端口转发被反病毒软件已经盯死,那么学习使用基于powershell的渗透脚本进行代理.端口转发的非常有必要的. 0x02 使用 介绍ithub: ...