bzoj2140(強連通分量tarjan)

2021-10-01 01:51:24 字數 1247 閱讀 8998

bzoj2140

本題可轉化為強連通分量來做,我們可以把每個人當作乙個結點,對於每一對夫妻我們可以連一條從男士到女士的一條有向邊,對於每一對情侶我們可以連一條從女士到男士的一條有向邊,但是,由於每個人的編號輸入的是字串,我們可以用map將字串轉化為數字編號。如果兩個夫妻之間有環,就不安全,否則安全。

**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

8005

;const

int maxm=

30005

;mapint> mp;

vector<

int> v[maxn]

;int n,m;

int dfn[maxn]

,low[maxn]

,ins[maxn]

,cnt=0;

stack<

int> st;

int b[maxn]

,c;void

tarjan

(int u)

else

if(ins[x])}

if(dfn[u]

==low[u]

)//printf("\n");

c++;}

}int

main()

cnt=0;

for(

int i=

1;i<=n;i++

)scanf

("%d"

,&m)

;for

(int i=

1;i<=m;i++

)memset

(dfn,0,

sizeof

(dfn));

memset

(ins,0,

sizeof

(ins));

for(

int i=

1;i<=

2*n;i++)}

int f=0;

for(

int i=

2;i<=

2*n;i+=2

)else

}return0;

}

bzoj2140 穩定婚姻 強連通分量

我國的離婚率連續7年上公升,今年的頭兩季,平均每天有近5000對夫婦離婚,大城市的離婚率上公升最快,有研究婚 姻問題的專家認為,是與簡化離婚手續有關。25歲的姍姍和男友談戀愛半年就結婚,結婚不到兩個月就離婚,是典 型的 閃婚閃離 例子,而離婚的導火線是兩個人爭玩電腦遊戲,丈夫一氣之下,把電腦炸爛。有...

強連通分量 tarjan求強連通分量

雙dfs方法就是正dfs掃一遍,然後將邊反向dfs掃一遍。挑戰程式設計 上有說明。雙dfs 1 include 2 include 3 include 4 include 5 6using namespace std 7const int maxn 1e4 5 8 vector g maxn 圖的鄰...

強連通分量

對於有向圖的乙個頂點集,如果從這個頂點集的任何一點出發都可以到達該頂點集的其餘各個頂點,那麼該頂點集稱為該有向圖的乙個強連通分量。有向連通圖的全部頂點組成乙個強連通分量。我們可以利用tarjan演算法求強連通分量。define n 1000 struct edge e 100000 int ec,p...