尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CF2112D(div2) D. Reachability and Tree R1700

CF2112D(div2) D. Reachability and Tree  R1700
📅 发布时间:2026/6/20 18:11:47

题意:给定一个含有n个点的树,现在要求选择改变所有边的方向,使得:对于1-n的每个点,它们各自能够通过边到达的其他点的个数的和恰好为n。

思路:
1.首先,num == n这个条件非常苛刻:因为一条边无论是什么方向,它对总个数的贡献至少为1,也就是说,num至少为n - 1。
2.先考虑什么情况下可以达到 num = n - 1 : 当边方向交替的时候便可以。 如 1 -> 2 <- 3
3.那么什么情况下,怎么改变其中一条边的方向,可以让num恰好+1呢?其实不难发现:把交替方向的 1->2-<3改成 1->2->3即可。
4.然后注意到,貌似当deg[i] > 2的时候,就无法对一个部分改变其中一条边的方向,使得它对num的贡献恰好+1了。
5.于是寻找一个deg == 2的点,开始dfs构造边,当遇到k的时候就翻转方向。

细节:我们选取dfs的开始点为g[k][0],避免从K开始导致k被跳过处理了。

code:

#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
vector<int> g[maxn];
int deg[maxn];
int k = -1;void dfs(int p, int fa, bool op) {if (p == k) op = !op;for (int x : g[p]) {if (x != fa) {if (op) cout<<p<<" "<<x<<endl;else cout<<x<<" "<<p<<endl;dfs(x, p, !op);}}
}void solve() {int n; cin>>n;for (int i = 0; i <= n; ++i) {g[i].clear();deg[i] = 0;}for (int i = 0; i < n - 1; i++) {int u, v; cin>>u>>v;deg[u]++;deg[v]++;g[u].push_back(v);g[v].push_back(u);}k = -1;for (int i = 1; i <= n; ++i) {if (deg[i] == 2) {k = i;break;}}if (k == -1) {cout<<"NO"<<endl;return;}cout<<"YES"<<endl;int s = g[k][0];dfs(s, s, 1);return;
}int main() {int tt; cin>>tt;while (tt--) solve();
}

相关新闻

  • 【AI开发必备】Dify接入本地大模型实战指南,小白也能5分钟搞定!告别API收费,手把手教你搭建私有知识库!
  • 基于C#实现的支持五笔和拼音输入的输入法
  • 从数据库到事件流:现代清结算系统架构全指南

最新新闻

  • 如何免费下载B站4K大会员视频:Python工具实战指南
  • FogFool:基于Perlin噪声的遥感图像物理对抗攻击方法
  • BarrageGrab:终极直播弹幕抓取解决方案,15+平台WebSocket直连技术指南
  • AI视频真伪鉴别:基于光流时序分析的主动式取证框架
  • 零训练AI换脸神器:roop-unleashed完整入门指南
  • 恶劣天气下遥感建筑物提取:HaLoBuild-Net联合优化模型实战

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号