第一行輸入兩個正整數 n,mn,m。
下面 mm 行每行輸入兩個正整數 x,yx,y 表示 xx 到 yy 有一條邊。
第一行輸出割點個數。
第二行按照節點編號從小到大輸出節點,用空格隔開。
輸入 #1複製
6 71 21 3
1 42 5
3 54 5
5 6
輸出 #1複製
15
code
#include
<
bits/stdc++.h
>
#define
dbg(
x) cout << #x <<"=
"<< x << endl
using
namespace
std;
typedef
long
long ll;
const
int maxn =
1e5+7;
int head[maxn], dfn[maxn], low[maxn];
int cnt =
0, tot =
0, tim =
0, top =
1, cl =
0, k;
int vis[maxn];
int color[maxn];
int iscut[maxn];
int tott, n, m;
/*head,結構體edge:存邊
dfn,low:tarjan中陣列
st:模擬棧
out:出邊
sd:強連通分量儲存
dq:統計答案
*/template
<
class
t>
inline
void
read(t
&res
)struct
edge
edge
[maxn *2];
inline
void
buildgraph
(int
from
,intto)
stack s;
void
tarjan
(intu,
intfa)if
(u == fa)
}low
[u]=
min(
low[u],
dfn[v]);}if
(son >=
2&& u == fa)
}void
init
()memset
(vis,0,
sizeof
(vis));
memset
(dfn,0,
sizeof
(dfn));
memset
(low,0,
sizeof
(low));
memset
(iscut,0,
sizeof
(iscut));
memset
(edge,0,
sizeof
(edge));
memset
(head,0,
sizeof
(head));
}int
main
()for
(int i =
1; i <= n;
++i )
}for
(int i =
1; i <= n;
++i )
}printf
("%d\n"
,tott);
for(
int i =
1; i <= n;
++i )
}return0;
}
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...