题目大意:

你有一个二分图,分别求出它的匹配数与各个连接匹配的两个点。

正文:

本题考虑用网络流,求匹配数就是二分图匹配模板(详见此处),但是我们还要求各个连接匹配的两个点。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

从网络流(\(\texttt{DINIC}\))的角度来思考,想匹配的边有什么特性。(给你几秒钟思考时间)我们发现不是匹配的边原来的边权(\(=1\)),发生了改变,那么只用判断是否改变就行了。

代码:

for (int i = 2; i <= tot; i += 2)
{
    if(e[i].y != s && e[e[i].op].y != s && e[i].y != t
         && e[e[i].op].y != t)
    {
        if(e[i].w == 1)
            printf("%d %d\n", e[i].y, e[e[i].op].y);
    }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄