CF2112D Reachability and Tree

题意

设 \(u\) 和 \(v\) 是有向图中的两个不同顶点。如果存在一条从顶点 \(u\) 到顶点 \(v\) 的路径,我们称有序对 \((u, v)\) 是好的。

给一棵树定向,使得好点对数量刚好为 \(n\)。如果可能,输出任意一种满足条件的边定向方案。

题解

注意到不管如何定向一条边总会产生 \(1\) 的贡献,那么答案至少为 \(n-1\)。

如图,我们只需要沿着 \(\text{DFS}\) 给边一正一反的定向就可以产生 \(n-1\) 的贡献。

现在要做的是如何多产生 \(1\) 的贡献,注意到如果一个点的度数为 \(2\) 时,改变其子树上所有边的方向,就可以刚好增加 \(1\) 的贡献。

如图,只要把以顶点 \(4\) 为根节点的子树上的边的方向全部取反即可。

具体的,先找出一个入度为 \(2\) 的点,标记一下,当遍历到该点时将当前方向取反,再正常 \(\text{DFS}\) 即可。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,id;
vector<int> e[N];
vector<pair<int,int>> ans;
void dfs(int u,int fa,bool op){
if(u==id) op^=1;
for(int v:e[u]){
if(v==fa) continue;
if(op) ans.emplace_back(u,v);
else ans.emplace_back(v,u);
dfs(v,u,op^1);
}
}
void solve(){
cin>>n;
for(int i=1;i<=n;i++) e[i].clear();
ans.clear();
for(int i=1;i<=n-1;i++){
int u,v;
cin>>u>>v;
e[u].emplace_back(v);
e[v].emplace_back(u);
}
bool flag=false;
for(int i=1;i<=n;i++)
if(e[i].size()==2){
flag=true;
id=i; //标记入度为 2 的点。
break;
}
if(!flag) return cout<<"NO\n",void();
if(id==1) dfs(2,2,1);//注意不能从标记的点开始 DFS ,否则方向取反就没用了。
else dfs(1,1,1);
cout<<"YES\n";
for(auto it:ans) cout<<it.first<<" "<<it.second<<"\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T; cin>>T;
while(T--) solve();
return 0;
}

CF2112D Reachability and Tree的更多相关文章

  1. [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

    二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...

  2. SAP CRM 树视图(TREE VIEW)

    树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...

  3. iOS网络4——Reachability检测网络状态

    一.整体介绍 前面已经介绍了网络访问的NSURLSession.NSURLConnection,还有网页加载有关的webview,基本满足通常的网络相关的开发. 其实在网络开发中还有比较常用的就是网络 ...

  4. 无限分级和tree结构数据增删改【提供Demo下载】

    无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以 ...

  5. 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  6. Leetcode 笔记 110 - Balanced Binary Tree

    题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For ...

  7. Leetcode 笔记 100 - Same Tree

    题目链接:Same Tree | LeetCode OJ Given two binary trees, write a function to check if they are equal or ...

  8. Leetcode 笔记 99 - Recover Binary Search Tree

    题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...

  9. Leetcode 笔记 98 - Validate Binary Search Tree

    题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binar ...

  10. Leetcode 笔记 101 - Symmetric Tree

    题目链接:Symmetric Tree | LeetCode OJ Given a binary tree, check whether it is a mirror of itself (ie, s ...

随机推荐

  1. CF1182B Plus from Picture 题解

    CF1182B Plus from Picture 写在前面 为什么在已经有 \(12\) 篇题解后,我还是要写这篇题解? 因为这篇题解提供一个码量较小,且时间复杂度严格 \(O(wh)\) 的做法, ...

  2. OverallAuth权限管理系统,超精度权限划分(第一篇:功能级权限)。

    一.前言 随着信息化系统的普及,信息安全愈发的重要,企业对于信息的保密程度越来越高.程序员面临的压力开始逐步递增. 而作者作为"码农",也深深的体会到这一点. 随着公司业务的发展, ...

  3. iPaaS 平台在企业中的定位及集成方式

    iPaaS 平台在企业中的定位是作为 IT 架构的基础底座能力之一,是构建业务中台的关键组件,同时也为数据中台提供支撑服务.它在企业中承担着连接.集成和管理不同系统.应用程序和数据的重要角色,为企业的 ...

  4. 获奖公告|RestCloud应用场景分享征稿大赛

  5. flink 1.11.2 学习笔记(5)-处理消息延时/乱序的三种机制

    在实时数据处理的场景中,数据的到达延时或乱序是经常遇到的问题,比如: * 按时间顺序发生的数据1 -> 2,本来应该是1先发送,1先到达,但是在1发送过程中,因为网络延时之类的原因,导致1反而到 ...

  6. 【深度品质】win10 21h1 64位专业版系统 V2021.03

    [深度品质]win10 21h1 64位专业版系统 V2021.03 文件: w1021h1x64cj.rar大小: 5993449476 字节 5.58GBMD5: C38D6CF3F5226901 ...

  7. Redis学习笔记--数据类型和常用命令

    数据类型和常用命令   简介: Redis全名Remote Dictionary Server(远程字典服务器)是一个高性能的Key-Value数据库提供了主富的数据结构,例如String.Hash. ...

  8. MFC好书推荐

    1. Programming Windows with MFC MFC最好的入门书籍,一个类一个类的拆开然后讲解给你,很容易上手 2. MFC Interals 分析的很深入,学过了第一本后,可以通过 ...

  9. Docker问题解决:Error response from daemon: Get https://registry-1.docker.io/v2/yandex/clickhouse-server/manifests/latest: net/http: TLS handshake timeout

    方法1: vi /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror.c.163.com&q ...

  10. 深度剖析:HR 人力资源软件排名背后的考量与推荐

    在数字化浪潮席卷企业管理的当下,HR 人力资源软件已成为企业提升管理效率.优化人才运营的关键工具.市场上软件琳琅满目,各类 "排名" 也层出不穷,但这些排名往往因评判标准不一而让人 ...