题意简述
$n$ 个点 $m$ 条边的有向图,边有黑白两种颜色。现在要给点染色,每个点染成黑或白,白点只能走它连出的白色边,黑点只能走它连出的黑色边,求一种染色方案使得 $1\to n$ 的最短路径最长,输出方案。
($1 \le n, m \le 500000$)
主要思路
发现正着做不好做,于是把边反过来倒着做。设 $f(x, c)$ 为当点 $x$ 颜色为 $c$ 时 $n\to x$ 的最短路径最长长度。直接 bfs 就行了。
参考代码
1 |
|
冈崎梦美的实验室
$n$ 个点 $m$ 条边的有向图,边有黑白两种颜色。现在要给点染色,每个点染成黑或白,白点只能走它连出的白色边,黑点只能走它连出的黑色边,求一种染色方案使得 $1\to n$ 的最短路径最长,输出方案。
($1 \le n, m \le 500000$)
发现正着做不好做,于是把边反过来倒着做。设 $f(x, c)$ 为当点 $x$ 颜色为 $c$ 时 $n\to x$ 的最短路径最长长度。直接 bfs 就行了。
1 | #include <bits/stdc++.h> |