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

E. Journey

E. Journey

Problem - E - Codeforces

\(kruskal\)重构树, 欧拉路径

首先不考虑操作二,那么题目就是问走过所有边回到 \(1\) 的最短路径,如果均仅走过一次,那么整个路径构成欧拉回路,答案为 \(\sum_i w_i\) ,否则,将有一些边走过多次。

那么操作二可以看作是在原图上建立一些虚拟边,避免走过重复边,缩小代价,答案就是虚拟边和原有的代价之和。

根据欧拉回路的定义,这些虚拟边根据每个点的度来建立,每两个度数为奇数的点(下文称为奇点)间可以建立

虚拟边的代价是两点之间路径编号最大的边的边权,且不要求简单路径。很容易想到并查集维护连通性即可确定虚拟边的代价,但复杂度较高。

考虑\(kruskal\)重构树,以原图上每个点作为叶子节点,按序号从小到大枚举边,将边作为非叶子节点,链接原图上非叶子的两个节点的祖先。

则两个奇点 \(u\) , \(v\) 间的虚拟边的代价即为重构树上两个点 \(u\) , \(v\) 的公共祖先的最小权值,可以\(O(n+m)\)计算完

class DSU{
public:vector<int> p;DSU(){}DSU(int n): p(n){iota(p.begin(), p.end(), 0);};int find(int x) {return x == p[x] ? x : p[x] = find(p[x]);}
};void bluket() {int n = R, m = R;ll ans = 0;vector<ll> a(m + 1), deg(n+1);vector<vector<int>> adj(n + m + 1);DSU ds(n + m + 1);for (int i = 1; i <= m; i++) {int u = R, v = R, w = R;int fu = ds.find(u), fv = ds.find(v);deg[u]++, deg[v]++;ans += w;a[i] = w;// kurskal 重构树, 按节点编号合并if(fu == fv) {adj[i + n].push_back(fu);ds.p[fu] = i + n;}else {adj[i + n].push_back(fu);ds.p[fu] = i + n;adj[i + n].push_back(fv);ds.p[fv] = i + n;}}// u 当前节点,fw 祖宗节点到当前节点可以采用的最小边权auto dfs = [&](auto&& dfs, int u, ll fw) -> int {// 到达表示重构树上的叶子节点,即原图的点, 返回是不是奇点if(u <= n) return deg[u] % 2;fw = min(fw, a[u - n]);int cnt = 0;for (int v : adj[u]) {cnt += dfs(dfs, v, fw);}// 所有未处理的子树上的奇点的最近公共祖先是当前的 uans += cnt / 2 * fw;cnt %= 2;// 传递未处理的奇点return cnt;};dfs(dfs, n + m, a[m]);cout << ans << endl;
}
http://www.gsyq.cn/news/47904.html

相关文章:

  • Linux优秀的系统--信号(3--信号的保存、阻塞)
  • 深入解析:SQL提数与数据分析指南
  • 大家来写 ICPC 西安(没写完)
  • 你的代码正在腐烂!你的团队正走在死亡螺旋上:技术债务积累的5个危险信号!
  • 使用WiX创建Windows应用安装包 - -YADA
  • 学生信息管理系统团队项目随笔
  • 第八天 测试用例编写
  • 没用的博客园页面的要素介绍
  • 结婚证识别科技:利用OCR和深度学习实现婚姻证件信息的自动提取与结构化处理
  • BOE(京东方)荣获第四届“纪念彼得德鲁克中国管理奖” 创新管理模式获权威认可
  • 青少年电子设计比赛培训笔记3
  • 使用rpmbuild将源代码制成rpm包
  • 【LVGL】进度条部件
  • Vue插值表达式
  • 好题集 (1) - LG P3978 [TJOI2015] 概率论
  • 路由基础
  • idea链接database时报错:serverTimezone
  • 题解:CF2117F Wildflower
  • UVM环境自动生成器具(2)uvmdvgen
  • 题解:CF961C Chessboard
  • 文字识别系统代码
  • 微软2025年11月补丁星期二修复1个零日漏洞和63个安全漏洞
  • Can Large Language Models Detect Rumors on Social Media?
  • P13573 [CCPC 2024 重庆站] Pico Park
  • 手工安装gcc-13.3.0
  • 深入解析:Cookie、Session、JWT、SSO,网站与 APP 登录持久化与缓存
  • AT_arc111_f [ARC111F] Do you like query problems?
  • Ai元人文:价值的“迷思”与“归真”——从家庭之爱到文明共生
  • 日总结 26
  • Daily Scrum 2025.11.12