割點
給出乙個n個點,m條邊的無向圖,求圖的割點。
輸入格式:
第一行輸入n,m
下面m行每行輸入x,y表示x到y有一條邊
輸出格式:
第一行輸出割點個數
第二行按照節點編號從小到大輸出節點,用空格隔開
輸入樣例#1: 複製
6 71 21 3
1 42 5
3 54 5
5 6
輸出樣例#1: 複製
15
n,m均為100000
tarjan 圖不一定聯通!!!
tarjan求割點
1 #include2 #include3 #include4 #include5 #include67using
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...