社区讨论
简单的模板哪里有问题?
P3388【模板】割点(割顶)参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6zhc1b
- 此快照首次捕获于
- 2025/11/20 13:21 4 个月前
- 此快照最后确认于
- 2025/11/20 13:21 4 个月前
直接从昨天做了的题中copy过来的。
那里都过了为什么这个模板题有问题?
先orz各位大佬。
CPP#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=100005;
int n,m;
int head[N],nex[N*2],to[N*2],cc=0;
int dfn[N],low[N],cl=0;
bool is[N];
int color[N],cnt;
int ans;
void addedge(int a,int b){
nex[++cc]=head[a];
head[a]=cc;
to[cc]=b;
}
void qwq(int k,bool flag){
int ch=0;
dfn[k]=low[k]=++cl;
for(int i=head[k];i;i=nex[i]){
if(!dfn[to[i]]){
ch++;
qwq(to[i],0);
low[k]=min(low[k],low[to[i]]);
if(flag&&ch>=2)is[k]=1;
if(!flag&&low[to[i]]>=dfn[k])is[k]=1;
}else low[k]=min(low[k],low[to[i]]);
}
}
int main(){
int i,j;
int a,b;
scanf("%d%d",&n,&m);
memset(head,0,sizeof(head)),memset(nex,0,sizeof(nex)),cc=0;
for(i=1;i<=m;i++){
scanf("%d%d",&a,&b);
addedge(a,b),addedge(b,a);
}
memset(dfn,0,sizeof(dfn)),memset(low,0,sizeof(low)),memset(is,0,sizeof(is)),cl=0;
for(i=1;i<=n;i++)if(!dfn[i])qwq(i,1);
ans=0;
for(i=1;i<=n;i++)if(is[i])ans++;
printf("%d\n",ans);
for(i=1;i<=n;i++)if(is[i])printf("%d\n",i);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...