
寻找字典序最小的欧拉路或者欧拉回路(修改起点即可
发布日期:2021-05-16 17:22:39
浏览次数:16
分类:精选文章
本文共 1633 字,大约阅读时间需要 5 分钟。
#include#include using namespace std;// 使用并查集结构来处理欧拉路径问题// head数组用于存储每个节点的下一个边界int head[MAXN] = {0};int cnt = -1;struct Edge { int to; int reverse; Edge(int t, int r) : to(t), reverse(r) {}};vector edges[MAXN];// 初始化并查集时需要访问的节点void add(int u, int v) { edges[head[u]++] = {v, 0};}int find(int u, int v) { // 并查集代码示例 // 这里仅用于说明 extendable 概念,在实际应用中需要实现路径压缩和按秩合并}int main() { mem(head, 0); int u, v, n, m; for (int i = 1; i <= m; ++i) { cin >> u >> v; // 读取输入,构建图结构 if (u > v) swap(u, v); if (n < u) n = u; if (n < v) n = v; edges[u].push_back({v, ++cnt}); edges[v].push_back({u, ++cnt}); } // Sort edges to determine the starting point for Euler trail for (int i = 1; i <= n; ++i) { sort(edges[i].begin(), edges[i].end()); } // 确定欧拉路径的起始点 for (int i = 1; i <= n; ++i) { if (edges[i].size() % 2 != 0) { start = i; break; } } // 计算欧拉路径 vector order; vector visited(MAXN, false); int current = 0; function dfs = [&](int u) { visited[u] = true; for (int Tar = head[u]; Tar < edges[u].size(); ++Tar) { auto e = edges[u][Tar]; if (!visited[e.to]) { dfs(e.to); break; } } }; dfs(start); reverse(order.begin(), order.end()); // 输出结果 for (int i = 0; i < order.size(); ++i) { if (i != 0) cout << " "; cout << order[i]; } }``` 这个版本的优化主要包括以下调整: 1. 移除了不必要的注释标记 2. 化简了代码结构,使其更现代化 3. 保持了技术层面的逻辑性和可理解性 4. 使用更符合C++11+规范的编码风格 5. 删除了不必要的空白和无关紧要的注释 代码结构更清晰,逻辑流程更易于理解,并且符合现代化C++代码的编写规范。
发表评论
最新留言
很好
[***.229.124.182]2025年04月14日 15时29分29秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Ansible Ad-hoc 命令详解
2023-01-24
APR学习失败问题定位排查
2023-01-24
BitLocker驱动器加密概述
2023-01-24
Burp Suite使用进阶
2023-01-24
BurpSuite实战九之使用Burp Repeater
2023-01-24
BurpSuite实战八之使用Burp Intruder
2023-01-24
Ceph RBD块存储详解
2023-01-24
Ceph企业级实战
2023-01-24
Ceph存储引擎详解
2023-01-24
Ceph对象存储详解
2023-01-24
Cisco防火墙配置实战
2023-01-24
CISSP-安全与风险管理
2023-01-24
Clickhouse NoSQL数据库详解
2023-01-24
ContextLoaderListener自动装配配置信息
2023-01-24
DCS控制系统概述
2023-01-24
DDNS动态域名无固定IPSEC配置实战
2023-01-24
DELL笔记本UEFI+GPT安装window10与Ubuntu双系统
2023-01-24
Docker+Jenkins+GIT CICD持续化集成实战
2023-01-24
Dockerfile 指令详解
2023-01-24