序言:
首先感谢@G20222222_tly学长提供的关于dfs的思路一份。
在此之前,如果看过我之前写的博客的同学,不必担心,只需要,忘记!
引子:
额,这道题,以平常的题目,过人的惊天数据来展示什么叫毒瘤。
然后去看了一下题解, 自己又重码了一遍,结果重新再来看的时候是一脸懵逼嗄。
然后想了将近一晚上的思路终于有了起色。
下面就是我的一些见解,和代码
代码及其思路
首先加入快读,是因为原代码是刚好卡着时间过的,
如果要按照,本人目前所学的东西来写的话
直接超时,不用说了。
关于dfs最新的思路就是这样的:
就是退回来的时候的边塞进ans里面,意思就是:
我们首先考虑就是无向边会拆分成正反两条边,
第 j j j条边,正向就是 > > 1 >> 1 >>1,反向就是 j < < 1 ∣ 1 j << 1 | 1 j<<1∣1
若要在正反两条边上同时打一个 v i s vis vis标记,就打在 j > > 1 j >> 1 j>>1上。
~~ 以上来自tly学长思路 ~~
之后就是判断是否是有向图或无向图, 如果都不是那就没有欧拉回路,而且如果图不连通也是不存在的
最后就是将思路里讲的处理负数
/*
当图是无向图时,欧拉回路的存在条件为所有点的入度为偶数
当图是有向图时,欧拉回路的存在条件是所有点的入度等于出度
求欧拉回路时dfs所有