AT_ttpc2015_l グラフ色ぬり

题目描述

# 图的着色 [problemUrl]: https://atcoder.jp/contests/ttpc2015/tasks/ttpc2015_l 给定一个由 $ N $ 个顶点和 $ A+B $ 条边组成的简单有向图 $ G $。每个顶点都被标记为 $ 1,\ 2,\ …,\ N $。 这个图中有 $ A $ 条红色边和 $ B $ 条蓝色边。 我们将删除所有蓝色边得到的图称为 $ G' $。 请找出满足以下条件的图 $ G'' $ 中边数的最大值: - $ G'' $ 是从 $ G $ 中删除 $ 0 $ 条或更多蓝色边后得到的图。 - 当将顶点 $ 1 $ 作为起点,顶点 $ N $ 作为终点时,$ G' $ 和 $ G'' $ 的最大流的值相等。其中所有边的容量均为 $ 1 $。 有关最大流的信息,请参阅[这里](https://ja.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E3%83%95%E3%83%AD%E3%83%BC%E5%95%8F%E9%A1%8C)。

输入格式

输入以以下格式从标准输入中给出。 > $ N $ $ A $ $ B $ $ X_1 $ $ Y_1 $ $ X_2 $ $ Y_2 $ : $ X_{A+B} $ $ Y_{A+B} $ - 第一行包含三个整数,以空格分隔,分别为 $ N(2\ \leq\ N\ \leq\ 100) $、$ A(1\ \leq\ A\ \leq\ 200) $ 和 $ B(1\ \leq\ B\ \leq\ 200) $。 - 接下来的 $ A+B $ 行给出了图的边信息。其中第 $ i $ 行包含两个整数 $ X_i(1\ \leq\ X_i\ \leq\ N) $ 和 $ Y_i(1\ \leq\ Y_i\ \leq\ N) $,表示存在边 $ (X_i,\ Y_i) $。 - 边 $ (X_1,\ Y_1),\ (X_2,\ Y_2),\ …,\ (X_A,\ Y_A) $ 为红色边,边 $ (X_{A+1},\ Y_{A+1}),\ (X_{A+2},\ Y_{A+2}),\ ...,\ (X_{A+B},\ Y_{A+B}) $ 为蓝色边。 - 不存在 $ X_i\ =\ Y_i $ 的 $ i $。并且,如果 $ i\ \neq\ j $,则 $ Y_i\ \neq\ Y_j $ 或 $ X_i\ \neq\ X_j $。

输出格式

输出 $ G'' $ 的边数的最大值。将结果输出到标准输出,并在末尾包含换行符。 ## 样例 #1 ### 样例输入 #1 ``` 4 2 2 1 2 2 4 1 3 3 4 ``` ### 样例输出 #1 ``` 3 ``` ## 样例 #2 ### 样例输入 #2 ``` 4 2 2 1 2 3 4 1 3 2 4 ``` ### 样例输出 #2 ``` 2 ``` ## 样例 #3 ### 样例输入 #3 ``` 5 3 4 1 2 2 3 3 5 1 4 2 4 3 4 5 4 ``` ### 样例输出 #3 ``` 7 ``` ## 样例 #4 ### 样例输入 #4 ``` 5 1 3 1 5 2 3 3 4 4 2 ``` ### 样例输出 #4 ``` 4 ``` ## 样例 #5 ### 样例输入 #5 ``` 5 3 4 1 2 2 3 3 4 1 5 2 5 3 5 4 5 ``` ### 样例输出 #5 ``` 3 ```

说明/提示

### 样例解释 3 在这种情况下,可以添加所有蓝色边。 ### 样例解释 4 在这种情况下,也可以添加所有蓝色边。 ### 样例解释 5 在这种情况下,无法添加任何蓝色边。