CF555E Case of Computer Network
题目描述
Andrewid the Android 是著名的银河系侦探。现在,他正为防止黑客攻击一个主要计算机网络做准备。
该网络有 $n$ 个节点,一些节点对之间通过 $m$ 条无向通道相连。计划通过这个网络传输 $q$ 条重要消息,第 $i$ 条消息必须通过一条或多条通道(可能经过一些中间节点)从节点 $s_{i}$ 发送到节点 $d_{i}$。
为了防御攻击,设计了一种特殊算法。遗憾的是,它只能用于所有通道都是有向的网络。因此,由于不能新增通道,决定对于每一条已有的无向通道,只允许数据传递一个方向。
你的任务是判断能否为每条通道选择一个方向,使得所有 $q$ 条消息都可以成功传递。
输入格式
第一行包含三个整数 $n$、$m$ 和 $q$($1 \leq n,m,q \leq 2 \cdot 10^5$),分别表示节点数、通道数和重要消息数。
接下来的 $m$ 行,每行包含两个整数 $v_{i}$ 和 $u_{i}$($1 \leq v_{i}, u_{i} \leq n$,$v_{i} \neq u_{i}$),表示节点 $v_{i}$ 和 $u_{i}$ 之间有一条无向通道。同一对节点之间可能有多条通道。
接下来 $q$ 行,每行包含两个整数 $s_{i}$ 和 $d_{i}$($1 \leq s_{i}, d_{i} \leq n$,$s_{i} \neq d_{i}$),分别表示每条消息的源节点和目标节点。
并不保证在最初的网络中所有消息都可以被传递。
输出格式
如果存在可行的方案,在一行内输出 “Yes” (不带引号),否则输出 “No” (不带引号)。
说明/提示
在第一个样例中,你可以这样给通道指定方向:$1 \rightarrow 2$、$1 \rightarrow 3$、$3 \rightarrow 2$、$4 \rightarrow 3$。则第一封信的路径为 $1 \rightarrow 3$,第二封信的路径为 $4 \rightarrow 3 \rightarrow 2$。
在第三个样例中,可以指定方向为:$1 \rightarrow 2$、$2 \rightarrow 1$、$2 \rightarrow 3$。则第一封信的路径为 $1 \rightarrow 2 \rightarrow 3$,第二封信的路径为 $2 \rightarrow 1$。
由 ChatGPT 5 翻译