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

2023 CCPC 深圳 F

F. Gift

基环树处理环。

给一棵基环树,要求删掉一条边后还是一棵树,说明只能删掉这棵基环树上的环上的边。

删掉边后还要保证以 \(p\) 作为根节点时,其他节点的儿子数量不超过 \(3\),说明根节点的度数一定是小于等于 \(3\) 的,除此之外,如果树上存在度数大于 \(4\) 的点,那么无论如何都无法满足该要求。

所以我们可以总体维护度数小于 \(4\) 的、等于 \(4\) 的、大于 \(4\) 的,然后枚举环上的边,看删掉之后是否还存在度数大于 \(4\) 的点,有就跳过,否则加上度数小于 \(4\) 的个数。

点击查看代码
#include <bits/stdc++.h>using namespace std;using i64 = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin >> n;vector<int> in(n + 1);vector e(n + 1, vector<int>());for (int i = 1; i <= n; i += 1) {int u, v;cin >> u >> v;e[u].push_back(v);e[v].push_back(u);in[u] += 1, in[v] += 1;}int idx = 0;bool found = false;vector<int> loop,dfn(n + 1, 0), fa(n + 1, 0);function<void(int)> dfs = [&](int u) {dfn[u] = ++idx;for (int v : e[u]) {if (v == fa[u]) {continue;}if (!dfn[v]) {fa[v] = u;dfs(v);if (found) {return;}}else if (dfn[v] < dfn[u]) {int cur = u;while (cur != v) {loop.push_back(cur);cur = fa[cur];}loop.push_back(v);found = true;return;}}};dfs(1);i64 ans = 0;int cnt[3] {};auto update = [&](int x, int v)->void{if (in[x] > 4) {cnt[2] += v;}else if (in[x] > 3) {cnt[1] += v;}else { cnt[0] += v; }};for (int i = 1; i <= n; i += 1) {update(i, 1);}int m = loop.size();for (int i = 0; i < m; i += 1) {int x = loop[i], y = loop[(i + 1) % m];update(x, -1), update(y, -1);in[x] -= 1, in[y] -= 1;update(x, 1), update(y, 1);if (!cnt[2]) {ans += cnt[0];}update(x, -1), update(y, -1);in[x] += 1, in[y] += 1;update(x, 1), update(y, 1);}cout << ans << "\n";return 0;
}
http://www.hskmm.com/?act=detail&tid=10018

相关文章:

  • 完整教程:【算法】双指针(三)[快慢指针]-快乐数
  • 9.19做题资料:哈希表查找时间复杂度分析
  • CF2143F Increasing Xor
  • 提到链接,你能想到什么
  • 实用指南:容器逃逸漏洞
  • 三种方式处理SpringBoot全局异常
  • ECT-OS-JiuHuaShan 框架的元推理,是历史性的文明话语权
  • 应对连写与变体:深度学习赋能维吾尔文识别的核心方案与难点解析
  • CMake工具链
  • 20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
  • 【脑电分析系列】第6篇:经典ERP成分解析 — P300、N170、N400等波形与它们代表的认知功能 — 洞察大脑的认知“电信号语言” - 教程
  • 9.19
  • [GDKOI2023 提高组] 游戏 题解
  • CSP-J/S 2025 游记
  • 2025.9.19 计数dp小记
  • Odoo19.0发布、微信支付、支付宝支付和顺丰模块同步上线
  • 9月14-21日小记 - L
  • ctfshow web入门 命令执行
  • 解题记录说是 | P3695 CYaRon!语
  • 分享一个极度精简的绿色的 五笔输入法
  • 实用指南:AI推理范式:从CoT到ReAct再到ToT的进化之路
  • sign up - Gon
  • ctfshow web入门 信息搜集
  • 完整教程:数据结构:单链表的应用(力扣算法题)第二章
  • CF2039E Shohag Loves Inversions
  • U522155 板垣 カノエ is WATCHING YOU std
  • ctfshow web
  • 代码随想录算法训练营第三天 | leetcode 203 707 206
  • Codeforces Round 1051 (Div. 2) A~D2
  • 【F#学习】数组:Array