題目背景
割點題目描述
給出乙個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 圖不一定聯通!!!
#include
#include
using
namespace
std;
const
int maxn = 100010;
struct edge edge[maxn*2];
int n,m,dfn[maxn],low[maxn],tot,cnt;
int head[maxn],num;
bool cut[maxn];
inline
void add(int bg,int ed)
inline
void tarjan(int u,int fa)
low[u]=min(low[u],dfn[v]);
if(child>=2 && u==fa)
cut[u]=1;
}}inline
void debug()
int main()
for(int i=1; i<=n; i++)
if(!dfn[i]) tarjan(i,i);
//debug();
for(int i=1; i<=n; i++)
if(cut[i]) tot++;
printf("%d\n",tot);
for(int i=1;i<=n;i++)
return
0;}
洛谷3388 割點(割頂)模板
題目背景 割點題目描述 給出乙個n個點,m條邊的無向圖,求圖的割點。輸入輸出格式 輸入格式 第一行輸入n,m 下面m行每行輸入x,y表示x到y有一條邊 輸出格式 第一行輸出割點個數 第二行按照節點編號從小到大輸出節點,用空格隔開 輸入輸出樣例 輸入樣例 1 6 7 1 2 1 3 1 4 2 5 3...
洛谷P3388 模板 割點
給出乙個n個點,m條邊的無向圖,求圖的割點。u是cut vertex的兩個條件 1.存在v使v及其所有後代沒有反向邊連回u的祖先 2.u是根且有兩個以上子節點 dfs一遍 low u 是u及其後代所能連回的最早祖先 沒有dfn v 就dfs v 然後用low v 更新low u v是u的後代 否則v...
洛谷P3388 模板 割點
都快忘了割點怎麼搞了 對所有點分兩類 1.根節點 2.非根節點 顯然根節點是很好做的 只需要數一下有沒有兩個子樹以上 對於非根節點 利用tarjan演算法 回憶到dfn的定義 時間戳,即在dfs中第幾個被訪問到 low 經過最多一條後向邊 棧中橫叉邊能到達的最小的節點時間戳 對於當前節點now來說,...