BZOJ2140 穩定婚姻(洛谷P1407)

2021-08-28 10:27:45 字數 731 閱讀 1236

洛谷題目傳送門

bzoj題目傳送門

乙個unsafe的情況就是把當前邊拆掉後仍然有增廣路。

我們把原來夫妻的邊由女方連到男方,舊情的邊由男方連到女方。這樣也是乙個二分圖,但是可能出現環。把這些環縮起來,可以證明如果夫妻都在乙個強連通分量裡就是unsafe的。因為如果在環上斷了一條邊,由於是偶環,一定能夠重新構建出來乙個匹配。而不在乙個強連通分量則說明他們之間一定有條匹配的邊是不能被調整的。

**:

#include

#include

#include

#include

#include

#include

#define n 8005

#define m 20005

using namespace std;

struct edgeed[m<<1]

;int n,m,k,tp,p,h[n]

,num[n]

,dfn[n]

,low[n]

,stk[n]

;map int> mp;

char s1[10]

,s2[10]

; bool f[n]

;#define add(x,y) ed[++k]=(edge),h[x]=k

void

tarjan

(int x)

}int

main()

bzoj 2140 穩定婚姻

查詢二分圖每一條邊是否一定在二分圖最大匹配上 首先任意乙個最大匹配,然後把兩個匹配點縮成乙個點,然後用這個圖跑強連通分量,如果乙個點所在的強連通分量大小大於1,那麼說明原圖存在一條匹配邊 非匹配邊 匹配邊 非匹配邊的環,所以這些邊不一定在最大匹配上。include include include i...

BZOJ2140 穩定婚姻

暴力點的我們可以每次拆一對然後跑匈牙利看看能不能跑出來,可以過 然後我們發現匈牙利能跑出來的條件是有乙個環,所以tarjan就可以了 include include include include include include include include include include inc...

BZOJ 2140 穩定婚姻

time limit 2 sec memory limit 259 mb submit 771 solved 359 submit status discuss 第一行為乙個正整數n,表示夫妻的對數 以下n行,每行包含兩個字串,表示這n對夫妻的姓名 先女後男 由乙個空格隔開 第n 2行包含乙個正整數...