P3388 模板 割點(割頂)

2021-10-10 07:21:05 字數 1822 閱讀 4447

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]<=l

ow[y

]dfn[x]<=low[y]

dfn[x]

<=l

ow[y

]上tarj

antarjan

tarjan

即可,時間複雜度:o(n

+m)o(n+m)

o(n+m)co

decode

code

#include

#include

#include

#include

#define ll long long

#define n 20010

#define m 200010

using

namespace std;

int n,m,tot,l[n]

,dfn[n]

,low[n]

,cnt,rt,ans;

struct nodee[m]

;inline

void

add(

int u,

int v)

;l[u]

=tot;

return;}

bool mark[n]

;inline ll read()

inline

void

tarjan

(int x)

}else low[x]

=min

(low[x]

,dfn[y]);

}return;}

signed

main()

for(

register

int i=

1;i<=n;i++)if

(!dfn[i]

)tarjan

(rt=i)

;for

(register

int i=

1;i<=n;i++)if

(mark[i]

) ans++

;printf

("%d\n"

,ans)

;for

(register

int i=

1;i<=n;i++)if

(mark[i]

)printf

("%d "

,i);

}

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個點,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 ...