社区讨论
自学tarhan,wa on#11求条
P3388【模板】割点(割顶)参与者 7已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @mjbeluux
- 此快照首次捕获于
- 2025/12/18 20:15 2 个月前
- 此快照最后确认于
- 2025/12/19 14:28 2 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,dfn[29000],low[29000],num,ans[29005],cnt;
vector<int> s[29000];
void dfs(int x,bool fir){
low[x]=dfn[x]=++num;
int son=0;
for(int i=0;i<s[x].size();i++){
int to=s[x][i];
if(!dfn[to]) {
dfs(to,0);
low[x]=min(low[x],low[to]);
if(low[to]>=dfn[x]&&!fir) ans[x]=1;
if(fir) son++;
}
else {
low[x]=min(low[x],dfn[to]);
}
}
if(son>1&&fir) ans[++cnt]=x;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
s[x].push_back(y);
s[y].push_back(x);
}
for(int i=1;i<=n;i++){
if(!dfn[i]) dfs(i,1);
}
for(int i=1;i<=n;i++){
if(ans[i]) cnt++;
}
cout<<cnt<<endl;
for(int i=1;i<=n;i++){
if(ans[i]) cout<<i<<' ';
}
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...