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