bzoj 2140 穩定婚姻

2021-07-11 06:49:14 字數 2459 閱讀 9553

查詢二分圖每一條邊是否一定在二分圖最大匹配上:

首先任意乙個最大匹配,然後把兩個匹配點縮成乙個點,然後用這個圖跑強連通分量,如果乙個點所在的強連通分量大小大於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對夫妻的...