当前位置: 首页 > 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.hskmm.com/?act=detail&tid=38010

相关文章:

  • 无源汇点的最小割问题 Stoer–Wagner
  • CF2152G
  • 染色法判定二分图 (dfs算法)
  • 链式前向星建图与搜索
  • 一般图最大匹配
  • 平面图最短路(对偶图)
  • 多源汇最短路(APSP问题)
  • 最小生成树(MST问题)
  • 缩点(Tarjan 算法)
  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 最近公共祖先 LCA
  • QMPlayer2中的类,数据结构
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 书评-谋杀黄昏
  • 20251024- 使用shell脚本分库定时备份MySQL数据
  • 权威调研榜单:东莞工厂装修公司OP3榜单好评深度解析
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 2025年口碑好的FPC离型纸,环氧胶离型纸推荐TOP生产厂家
  • 2025年口碑好的数字地磅,电子汽车衡地磅厂家推荐及选择建议
  • 二分
  • 权威调研榜单:四氟换热器生产厂家TOP3榜单好评深度解析
  • 2025年热门的魔方智能柜,黑金刚智能柜厂家推荐及选择指南
  • 2025年10月扬州公考面试机构全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 2025年口碑好的空气能地暖管,德国品牌地暖管厂家最新TOP推荐榜