P3388 模板 割點(割頂)

2022-04-06 18:41:08 字數 1322 閱讀 5851

割點

給出乙個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均為100000

tarjan 圖不一定聯通!!!

tarjan求割點

1 #include2 #include3 #include4 #include5 #include6

7using

namespace

std;89

const

int n = 100100;10

struct

edgee[n<<1

];13

inthead[n],dfn[n],low[n];

14bool

iscut[n];

15int

tn,tot;

1617 inline char

nc()

21 inline int

read()

2930

void add_edge(int u,int

v) 33

34void tarjan(int u,int

fa)

46else

if (dfn[v] < dfn[u] && v !=fa)

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

49if (fa<0 && cnt_son==1) iscut[u] = false;50

}51intmain()

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

58if (!dfn[i]) tarjan(i,-1

);59

60int ans = 0;61

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

62if (iscut[i]) ans++;

63 printf("

%d\n

",ans);

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

65if (iscut[i]) printf("

%d "

,i);

66return0;

67 }

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 複製...

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 模板 割點(割頂)

n 給定一張無向圖g g g,求圖的割點 s ol utio nsolution soluti on判斷條件 非搜尋樹起點x xx,任意乙個子節點y yy,滿足dfn x l ow y dfn x low y dfn x l ow y 搜尋樹起點rtrt rt,至少兩個子節點y yy,滿足dfn x...