DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

双重欧拉回路

返回题目

题解

度数为 111 的顶点会迫使游走沿刚经过的边立即返回,因此无解。反之,如果所有顶点的度数都至少为 222,则一定有解。图中可以有桥。

将每条边复制一份,用 Hierholzer 算法构造欧拉回路。把连续经过同一条原始边称为掉头,最后一条边与第一条边的连接处也要检查。

选取一次掉头 u→v→uu\to v\to uu→v→u。由于 vvv 的度数至少为 222,回路中还有另一次访问 x→v→yx\to v\to yx→v→y。边 uvuvuv 的两次使用都已包含在选中的掉头中,所以 x≠ux\neq ux=u 且 y≠uy\neq uy=u。允许 x=yx=yx=y。

反转两次访问之间的区间 v→u→⋯→x→vv\to u\to\cdots\to x\to vv→u→⋯→x→v。两端变成 u→v→xu\to v\to xu→v→x 和 u→,都不是掉头。区间内部是否掉头不变,各边的使用次数和游走的闭合性也不变。因此掉头次数至少减少 ,且不会产生新的掉头。

初始掉头次数至多为 MMM。每次查找并反转区间需要 O(M)O(M)O(M) 时间,因此总时间复杂度为 O(N+M2)O(N+M^2)O(N+M2),空间复杂度为 O(N+M)。所有测试用例的时间不超过 。

子任务 1 用三进制记录每条边的使用次数,并对当前顶点、上一条边及三进制状态进行记忆化搜索。可以固定先沿一个方向经过输入中的第一条边,因为任何合法回路都能通过循环移位及必要时反转满足该要求。时间复杂度为 O(NM23M)O(NM^2 3^M)O(NM23M),空间复杂度为 O(NM3M)O(NM3^M)O(NM3。、 时可以通过。

子任务 2 的图只能是路径或环。路径无解,环沿同一方向走两圈即可,时间和空间复杂度均为 O(N+M)O(N+M)O(N+M)。子任务 3 使用上述反转算法。

Solution written by GPT

v→yu\to v\to y
u→v→y
111
O(N+M)
O(N+M)
O(∑N+(∑M)2)O(\sum N+(\sum M)^2)O(∑N+(∑M)2)
M
)
M≤6M\leq6M≤6
∑M≤200\sum M\leq200∑M≤200