Problem
【POI2010】Bridges
Description
为了减肥,来到了瘦海。
这是一个巨大的海,海中有个小岛,小岛之间有座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到另外任意一个小岛。
现在想骑单车从小岛出发,骑过每一座桥,到达每一个小岛,然后回到小岛。
霸中同学为了让减肥成功,召唤了大风,由于是海上风变得十分大,经过每一座桥都有不可避免的风阻碍,十分,于是用泡芙贿赂了你,希望你能帮他找出一条承受的最大风力最小的路线。
Input
第一行为两个用空格隔开的整数。
接下来行,每行为由空格隔开的个整数,第行表示第座桥连接小岛和,从到承受的风力为,从到承受的风力为。
Output
如果无法完成减肥计划,则输出NIE
,否则第一行输出最大风力的最小值。
Sample Input
1 | 4 4 |
Sample Output
1 | 4 |
Explanation
HINT
,
对于每座桥,保证,,
标签:二分答案
网络流
欧拉回路
Solution
二分答案+网络流判定混合图欧拉回路
二分答案,找出符合条件的边集,原问题变为判断混合图中是否存在欧拉回路。
用经典的网络流判定混合图欧拉回路的建模方式:
- 给所有无向边随机定向,若的无向边定向为,则连边流量为
- 按照定向后的图计算每个点的入度和出度
- 对于每个点,若,则连边流量为;若,则连边流量为
建图后跑一遍,若满载,则存在欧拉回路。
大致原理:欧拉回路的充要条件是存在一种定向使得每个点的入度等于出度。随机定向后,连接“”的边,这样走这条边可以使得的出度,的入度,达到边反向的效果。而一个点入度每,出度均要,所以分正负从或向连长为的边,这样满载时这个点一定有。
Code
1 |
|