当前位置: 首页 > news >正文

欧拉路径/欧拉回路 Hierholzers

欧拉路径/欧拉回路 Hierholzers

欧拉路径:一笔画完图中全部边,画的顺序就是一个可行解;当起点终点相同时称欧拉回路。

有向图欧拉路径存在判定

有向图欧拉路径存在:\(\tt ^1\) 恰有一个点出度比入度多 \(1\) (为起点);\(\tt ^2\) 恰有一个点入度比出度多 \(1\) (为终点);\(\tt ^3\) 恰有 \(N-2\) 个点入度均等于出度。如果是欧拉回路,则上方起点与终点的条件不存在,全部点均要满足最后一个条件。

signed main() {int n, m;cin >> n >> m;DSU dsu(n + 1); // 如果保证连通,则不需要 DSUvector<unordered_multiset<int>> ver(n + 1); // 如果对于字典序有要求,则不能使用 unorderedvector<int> degI(n + 1), degO(n + 1);for (int i = 1; i <= m; i++) {int x, y;cin >> x >> y;ver[x].insert(y);degI[y]++;degO[x]++;dsu.merge(x, y); // 直接当无向图}int s = 1, t = 1, cnt = 0;for (int i = 1; i <= n; i++) {if (degI[i] == degO[i]) {cnt++;} else if (degI[i] + 1 == degO[i]) {s = i;} else if (degI[i] == degO[i] + 1) {t = i;}}if (dsu.size(1) != n || (cnt != n - 2 && cnt != n)) {cout << "No\n";} else {cout << "Yes\n";}
}

无向图欧拉路径存在判定

无向图欧拉路径存在:\(\tt ^1\) 恰有两个点度数为奇数(为起点与终点);\(\tt ^2\) 恰有 \(N-2\) 个点度数为偶数。

signed main() {int n, m;cin >> n >> m;DSU dsu(n + 1); // 如果保证连通,则不需要 DSUvector<unordered_multiset<int>> ver(n + 1); // 如果对于字典序有要求,则不能使用 unorderedvector<int> deg(n + 1);for (int i = 1; i <= m; i++) {int x, y;cin >> x >> y;ver[x].insert(y);ver[y].insert(x);deg[y]++;deg[x]++;dsu.merge(x, y); // 直接当无向图}int s = -1, t = -1, cnt = 0;for (int i = 1; i <= n; i++) {if (deg[i] % 2 == 0) {cnt++;} else if (s == -1) {s = i;} else {t = i;}}if (dsu.size(1) != n || (cnt != n - 2 && cnt != n)) {cout << "No\n";} else {cout << "Yes\n";}
}

有向图欧拉路径求解(字典序最小)

vector<int> ans;
auto dfs = [&](auto self, int x) -> void {while (ver[x].size()) {int net = *ver[x].begin();ver[x].erase(ver[x].begin());self(self, net);}ans.push_back(x);
};
dfs(dfs, s);
reverse(ans.begin(), ans.end());
for (auto it : ans) {cout << it << " ";
}

无向图欧拉路径求解

auto dfs = [&](auto self, int x) -> void {while (ver[x].size()) {int net = *ver[x].begin();ver[x].erase(ver[x].find(net));ver[net].erase(ver[net].find(x));cout << x << " " << net << endl;self(self, net);}
};
dfs(dfs, s);
http://www.jsqmd.com/news/21175/

相关文章:

  • 无源汇点的最小割问题 Stoer–Wagner
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • CF2152G
  • 缩点(Tarjan 算法)
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 代理
  • 双碳目标下,MyEMS 为何成为制造企业的 “刚需工具”?
  • 树上路径交
  • 10.23总结
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 10.21总结
  • 最近公共祖先 LCA
  • 题解:P3343 [ZJOI2015] 地震后的幻想乡
  • 暂存:P14214 [COI 2010] 圆圈 / KOLO
  • 树论大封装(直径+重心+中心)
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 书评-谋杀黄昏
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 完整教程:【汽车篇】AI深度学习在汽车零部件外观检测——铝铸件中的应用
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 20251024- 使用shell脚本分库定时备份MySQL数据