Luogu P3388 模板 割點(割頂)

2021-08-29 16:09:55 字數 1061 閱讀 9899

割點

給出乙個nn個點,mm條邊的無向圖,求圖的割點。

輸入格式:

第一行輸入n,mn,m

下面mm行每行輸入x,yx,y表示xx到yy有一條邊

輸出格式:

第一行輸出割點個數

第二行按照節點編號從小到大輸出節點,用空格隔開

輸入樣例#1:複製

6 7

1 21 3

1 42 5

3 54 5

5 6

輸出樣例#1:複製

1 

5

對於全部資料,n \le 20000n≤20000,m \le 100000m≤100000

點的編號均大於00小於等於nn。

tarjan圖不一定聯通。

#include#includeusing namespace std;

int read()

const int n=2e5+5;

int n,m,ans[n],num;

int cnt,he[n],to[n],nxt[n];

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

inline void add(int u,int v)

void tar(int u,int r)

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

} if(ch>=2&&u==r) ans[u]=1;

}int main()

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

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

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

if(ans[i]) num++;

printf("%d\n",num);

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

if(ans[i]) printf("%d ",i);

return 0;

}

Luogu P3388 割點模板

luogu p3388 在乙個無向圖中,如果有乙個頂點集合,刪除這個頂點集合以及這個集合中所有頂點相關聯的邊以後,圖的連通分量增多,就稱這個點集為割點集合。如果某個割點集合只含有乙個頂點x 也即是乙個割點集合 那麼x稱為乙個割點。為了便於理解,我們可以從狹義上進行分析 對於乙個連通無向圖,刪去其中的...

Luogu P3388 模板 割點(割頂)

一道求割點的板子題。還是採用經典的tarjan演算法。首先大致和tarjan求強連通分量相似,都是用 dfn x 表示訪問到 x 的時間 時間戳 low x 表示通過 x 回邊能走到的時間戳最小的點的時間戳。然後我們考慮一下對於乙個點如何判斷它是否為割點 low now min low now df...

洛谷3388 割點(割頂)模板

題目背景 割點題目描述 給出乙個n個點,m條邊的無向圖,求圖的割點。輸入輸出格式 輸入格式 第一行輸入n,m 下面m行每行輸入x,y表示x到y有一條邊 輸出格式 第一行輸出割點個數 第二行按照節點編號從小到大輸出節點,用空格隔開 輸入輸出樣例 輸入樣例 1 6 7 1 2 1 3 1 4 2 5 3...