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

2022-08-31 04:03:06 字數 1126 閱讀 6475

題目鏈結

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

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

typedef pairp;

typedef long long ll;

const int inf = 0x3f3f3f3f;

const double pi = acos(-1.0);

const double eps = 1e-9;

const int n = 1e4 + 5;

struct edge

edge(int a, int b):u(a),v(b)

};vectorg[n];

vectoredges;

int dfn[n],low[n],dfs_clock;

int color[n];

void init(int n)

void addedge(int u, int v)

void dfs(int u, int fa)

}else

low[u] = min(low[u], dfn[v]);

}}int cnt, flag;

void dfs2(int u, int fa, int c)

else if(color[v] == color[u])

flag = 1;

}}int t,n,m,u,v,ans,kase = 0;

int main()

for(int i = 0; i < n; i++)

if(!dfn[i]) dfs(i,i);

memset(color, 0, sizeof(color));

ans = 0;

for(int i = 0; i < n; i++)

printf("case %d: %d\n", ++kase, ans);

}return 0;

}

loj 1300 邊雙聯通 判奇圈 )

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

邊雙聯通分量

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

邊雙聯通分量

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