查詢二分圖每一條邊是否一定在二分圖最大匹配上:
首先任意乙個最大匹配,然後把兩個匹配點縮成乙個點,然後用這個圖跑強連通分量,如果乙個點所在的強連通分量大小大於1,那麼說明原圖存在一條匹配邊-非匹配邊-匹配邊-非匹配邊的環,所以這些邊不一定在最大匹配上。
#include
#include
#include
#include
#include
#define
ll long
long
#define
unl
unsigned
long
long
#define
inf
1e9
#define
eps
1e-8
#define
md
#define
n 4010
using
namespace
std;
struct
yts e[
20010
];
int
dfn[n],
low[n],
s[n],
v[n],
scc[n],
sz[n];
charst[
n];
const
unl cheng
=2333
;
int
num,
dfs_cnt
,top
,scc_cnt
;
map
<
unl,
int>
mp;
void
put(
intx
,int
y)
unl get_hash
()
void
tarjan
(int
x)
else
if(!
scc[y])
low[x]=
min(
low[x],
dfn[
y]);
}
if(
dfn[
x]==
low[
x])
while(y
!=x);
}
}
int
main
()
scanf
("%d",&m
);
for(
inti=1
;i<=m;
i++)
for(
inti=1
;i<=n;
i++)
if(!
dfn[i])
tarjan(i
);
for(
inti=1
;i<=n;
i++)
if(
sz[scc[
i]]!=1)
printf
("unsafe\n"
);
else
printf
("safe\n"
);
return
0;
}
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行包含乙個正整數...
BZOJ 2140 穩定婚姻
2140 穩定婚姻 time limit 2 sec memory limit 259 mb submit 911 solved 422 submit status discuss description input 第一行為乙個正整數n,表示夫妻的對數 以下n行,每行包含兩個字串,表示這n對夫妻的...