【JZOJ6094】循环流
Description
你曾经有一个循环流(每个点均满足流量平衡条件),这个流网络上有 n 个点,
且每条边的流量只有 1 或 2,可能有重边却没有自环。显然,由于它是一个流网络,
它是一个弱连通图(将边视为无向边后为连通图)。遗憾的是你找不到这个流了,但
你曾经记下了它流量为 1 的边的数量和流量为 2 的边的数量。由于这个图的点数有
点多,你很有可能数错边数,因此你现在想知道存不存在这样一个流符合你记下的
数据。
Solution
真
⋅
\cdot
⋅欺诈题
n
=
2
n=2
n=2时可以特判。
对于
n
>
2
n>2
n>2的情况,如果全是流量为
1
1
1的边,我们可以构造一种欧拉回路,提供一种思路:先从
1
1
1走到
n
n
n,覆盖
1
1
1~
n
n
n,中间可以走重复的点(不能走自环,且中途不能走到
1
1
1),走
a
−
1
a-1
a−1条边,最后直接走到
1
1
1。
如果有流量为
2
2
2的路径,我们先用
2
2
2边从
1
1
1走出覆盖点最多的一条链(可以走重点,同样不能走到
1
1
1),记这时走到的点为
x
x
x,那么从
x
x
x到
1
1
1连一条
1
1
1边,那么相当于所有的
2
2
2边都变成了
1
1
1边,那么接着从
x
x
x按前面的策略往下走即可。
所以当
b
=
0
b=0
b=0时,
a
≥
n
a\geq n
a≥n有解;
a
=
0
a=0
a=0时,
b
≥
n
b\geq n
b≥n有解;其它情况,
a
−
1
+
b
>
=
n
a-1+b>=n
a−1+b>=n有解。