随笔分类 -  ACM / 图论 欧拉路径

摘要:原题链接 考察:欧拉路径,离散化 思路: 定睛一看这不欧拉路径吗,然后套板子即可.... ##Code #include <iostream> #include <cstring> #include <map> using namespace std; typedef pair<int,int> P 阅读全文
posted @ 2021-08-30 16:33 acmloser 阅读(39) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉回路(?) 思路: 每个点$u$与$a = (u<<1)&((1<<n)-1),a+1$有一条有向边,也就是每个点的入度 = 出度 = 2.必然存在欧拉回路,$dfs$即可 但是看了网上的题解都没说为啥可以这样$dfs$,这里如果遇到遍历后的点回退,这个点与上一个遍历过的点一定有 阅读全文
posted @ 2021-07-16 13:48 acmloser 阅读(26) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉路径 思路: 有向图存在欧拉路径:所有点入度 = 出度或除两个外入度 = 出度. 但此条件有个大前提就是边连通,判断边连通需要:并查集或者dfs ##Code #include <iostream> #include <cstring> using namespace std; 阅读全文
posted @ 2021-07-16 00:39 acmloser 阅读(35) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉路径 思路: 根本不难,注意$ans$数组不要开小了..... ##Code #include <iostream> #include <cstring> using namespace std; const int N = 510; int m,g[N][N],d[N],max 阅读全文
posted @ 2021-07-15 22:46 acmloser 阅读(36) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉回路 思路: 模板题.主要点在删除边,邻接表删除边需要将$road[i].ne$改变,否则时间复杂度是$O(m2)$,修改后的时间复杂度是$O(n+m)$. 关于$dfs$为什么用&,这是回溯时,直接得到的就是新的边,如果我们用$h[u]$修改,那么下次回溯时我们还是用的原来的边 阅读全文
posted @ 2021-07-15 21:35 acmloser 阅读(53) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:欧拉路径 思路: 主要是看懂这句:**保证:铲雪车从起点一定可以到达任何街道。**这句话的意思是说铲雪车在某条道路上.结合题意发现每个点的入度出度相等,构成欧拉路径.由此答案就是所有路径和*2. ##Code //每条边都是双向道,所以每个点入度 = 出度,存在欧拉回路 #inclu 阅读全文
posted @ 2021-07-15 16:20 acmloser 阅读(41) 评论(0) 推荐(0) 编辑