CF883G Orientation of Edges
题目描述
Vasya 拥有一张由有向边和无向边组成的图。这张图中,两个顶点之间可能存在多条边。
Vasya 从中选定了一个顶点 $s$。现在,他希望制定两个不同的方案:
1. 将每条无向边指定一个方向,以最大化从顶点 $s$ 可以到达的其他顶点数量;
2. 将每条无向边指定一个方向,以最小化从顶点 $s$ 可以到达的其他顶点数量。
在每个方案中,所有无向边都必须变为有向边。同一条无向边可以在两个方案中选择不同的方向。
你的任务是帮助 Vasya 找出这两个方案。
输入格式
第一行输入三个整数 $n$、$m$ 和 $s$,分别表示图中的顶点数、边数,以及 Vasya 选择的起始顶点满足 $2 \le n \le 3 \times 10^5$,$1 \le m \le 3 \times 10^5$,$1 \le s \le n$。
接下来的 $m$ 行中,每行包含三个整数 $t_i$、$u_i$ 和 $v_i$,描述图中的一条边和连接的顶点,条件为 $1 \le t_i \le 2$,$1 \le u_i, v_i \le n$,且 $u_i \neq v_i$。如果 $t_i = 1$,表示这是一条从顶点 $u_i$ 指向顶点 $v_i$ 的有向边。如果 $t_i = 2$,表示这是一条连接顶点 $u_i$ 和 $v_i$ 的无向边。
保证至少存在一条无向边。
输出格式
前两行输出第一种方案,即最大化可达顶点数量的方案。第三行和第四行输出第二种方案,即最小化可达顶点数量的方案。
每种方案的第一行输出一个整数,表示从起始顶点 $s$ 可以到达的顶点总数。第二行由 $f$ 个符号 '+' 和 '-' 组成,其中 $f$ 是图中无向边的数量。对于输入中的第 $j$ 条无向边 $(u, v)$,如果在该方案中这条边应从 $u$ 指向 $v$,输出 '+';反之,如果应从 $v$ 指向 $u$,输出 '-'。无向边按输入顺序编号。
如果有多个解,输出任意一个即可。
**本翻译由 AI 自动生成**