洛谷3388 割點(割頂)模板

2021-08-07 09:37:11 字數 1020 閱讀 6542

題目背景

割點題目描述

給出乙個n個點,m條邊的無向圖,求圖的割點。

輸入輸出格式

輸入格式:

第一行輸入n,m

下面m行每行輸入x,y表示x到y有一條邊

輸出格式:

第一行輸出割點個數

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

輸入輸出樣例

輸入樣例#1:

6 7

1 2

1 3

1 4

2 5

3 5

4 5

5 6輸出樣例#1:1 5

說明n,m均為100000

tarjan 圖不一定聯通!!!

注意:

1.如果root有至少2個孩子,那麼root就是割點;

有1個孩子不是;

2.遍歷完圖後,在回溯時找割點,所以更新放在if(!dfn[x])裡面;

#include

#include

#include

#include

using

namespace

std;

const

int maxn=500010;

int fst[maxn],nxt[maxn],low[maxn],dfn[maxn],flag[maxn];

int n,m,root=-1,tot,tim,cnt;

struct hh

ma[maxn];

void build(int f,int t)

; nxt[tot]=fst[f];

fst[f]=tot;

return;

}void dfs(int x,int fa)

}else

if(v!=fa) low[x]=min(low[x],dfn[v]);

}return;

}void solve()

int main()

洛谷 P3388 模板 割點(割頂)

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

洛谷P3388 模板 割點(割頂)

題目大意 求出乙個無向圖的割點 題解 tarjan 若乙個點為根節點 起始節點 只需要判斷它有多少個兒子,若不是根節點,假如 low v geqslant dfn v 就說明 v 沒有返祖邊,即該節點 u 為割點。卡點 1.多輸出了一些數 2.沒有去重 c code include include ...

洛谷 P3388 模板 割點 割頂 tarjan

題目鏈結 題意 給出乙個n個點m條邊的無向圖,求其割點。思路 tarjan求割點模板題。tarjan 求割點 遍歷整個圖,則整個圖可轉化為一棵樹 附帶著有回邊 設定兩個陣列,dfn i 記錄搜尋到i的時間 low i 記錄在i的子樹中通過非父子邊能夠遍歷到的最早的dfn 那麼如何判斷乙個點是否是割點...