poj 3177 邊連通分量

2022-05-22 07:36:10 字數 917 閱讀 9956

思路:

dfs求出所有點的low值,然後對每個連通分量進行縮點,可以通過low來進行縮點。雖然在同一連通分量裡可能存在不同的low值,但這並不影響縮點。將每個連通分量縮為乙個點後,只要求出這個縮點後的樹上的葉子節點個數就行了。結果為(leaf+1)/2。

#include#include

#include

#include

#include

#include

#define maxn 1010

#define maxm maxn*10

using

namespace

std;

int index[maxn],degree[maxn],dfn[maxn],low[maxn],e,n,lab=0

,num,visit[maxn][maxn];

void

init()

struct

edgeedge[maxm];

void addedge(int

from, int

to)int dfs(int

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

}return0;

}int

solve()}}

return0;

}int

main()

}int ans=0

; dfs(1);

solve();

for(i=1;i<=n;i++)

if(degree[i]==1

) ans++;

printf(

"%d\n

",(ans+1)/2

); }

return0;

}

poj3177 雙連通分量

無向圖,存成有向圖,一條邊存成兩條 強連通的時候就會導致重邊形成環,用fa記錄來自的邊,注意並且用flag判斷是否只有一條那樣的反向邊 求需要添多少條邊成雙連通,記度為1的強連通分量數為ans,結果為 ans 1 2 include include include includeusing name...

Poj 3177 雙聯通分量

題目大意 分析題解 個人 相關鏈結 啟發總結 特別是第四個!以前我了解了low的定義,但是卻沒有發現這個區別 我們平時使用的low,都是其子孫通過 一條返祖邊直接到達的點來決定的。如果我們把這個限制取消掉,按照其提供的做法,可以很簡單的對雙聯通分量進行染色。poj3177 求新增多少條邊可變連通圖。...

邊雙連通分量 jarjan poj 3177

大意 給定乙個無向連通圖,判斷至少加多少的邊,才能使任意兩點之間至少有兩條的獨立的路 沒有公共的邊,但可以經過同乙個中間的頂點 思路 在同乙個雙連通分量裡的所有的點可以看做乙個點,收縮後,新圖是一棵樹,樹的邊便是原圖的橋。現在問題轉化為 在樹中至少新增多少條邊能使圖變成邊雙連通圖 即新增的邊的個數 ...