loj 1300 邊雙聯通 判奇圈 )

2021-09-08 16:57:14 字數 1318 閱讀 6726

思路:首先tarjan標記橋,然後對於dfs遍歷整個圖,我們可以得出乙個簡單的結論,就是如果乙個雙連通分量中存在奇圈,那麼這個雙連通分量中的所有點都可行,於是我們可以dfs染色判奇圈。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6#define maxn 2222278

struct

edgeedge[maxn<<1

];11

12int

n,m,ne;

13int

head[maxn];

1415

void insert(int u,int

v)16

2122

intlow[maxn],dfn[maxn],cnt;

23bool bridge[maxn<<1

];24

bool

mark[maxn];

2526

void tarjan(int u,int

father)

2739 }else

if(mark[v])42}

43}4445

intflag,ans;

46int

color[maxn];

4748

void dfs(int u,int

state)

49else

if(color[v]==0)60

}61}62

63int

main()

6476 cnt=0

;77 memset(mark,false,sizeof

(mark));

78 memset(dfn,0,sizeof

(dfn));

79 memset(bridge,false,sizeof

(bridge));

80for(int i=0;iif(dfn[i]==0

)tarjan(i,i);

81 memset(color,0,sizeof

(color));

82 ans=0;83

for(int i=0;i)90}

91 printf("

case %d: %d\n

",t++,ans);92}

93return0;

94}9596

9798

view code

LightOJ 1300 邊雙聯通分量 交錯路染色

題目鏈結 求出邊雙聯通分量,然後在每個分量裡面進行交錯染色,只要出現乙個奇圈,那麼整個分量的頂點都可以滿足條件作為起點。include include include include include include include include include include include in...

邊雙聯通分量

首先什麼是邊雙聯通分量?邊雙連通分量是指,在 無向圖 中刪除任意一條邊依舊聯通的聯通塊 之前講過強連通分量,這裡邊雙聯通分量的做法也需要利用tarjan演算法獲得邊雙聯通分量。對於邊雙聯通分量中還有乙個概念,就是橋。橋指的是 刪除該邊圖不再連通。對應的另乙個概念是 割點 割點的的是 如果除去此節點和...

邊雙聯通分量

noip最後一次學習 敲板子 橋 如果這條邊去掉後圖的聯通分量增加,則這條邊稱為橋。邊雙聯通分量 如果乙個對於乙個圖的某個子圖,任意兩點至少存在兩條 邊不重複 的路徑,則這個子圖是邊雙聯通分量。很顯然,任意乙個邊雙中不含有橋。除橋外每條邊都僅屬於乙個邊雙。如果把原圖中所有橋刪除,每個聯通分量都是原圖...