求调
查看原帖
求调
557927
Chen小阳啊楼主2022/8/18 09:08
using namespace std;
struct node{
	int to,next;
};
int root=0;;
node edge[100010];
int dfn[100010],low[100010];
int head[30000];
int num,nedge;
void add(int u,int v){
	nedge++;
	edge[nedge].to=v;
	edge[nedge].next=head[u];
	head[u]=nedge;
}
int kl;
void tarjan(int u,int fa){
	int cnt=0;
	dfn[u]=low[u]=++num;
	for(int i=head[u];i!=-1;i=edge[i].next){
		int v=edge[i].to;
		if(v==fa)continue;
		if(!dfn[v]){
			tarjan(v,u);
			low[u]=min(low[u],low[v]);
			if(low[v]>=dfn[u]){
				cnt++;
				if(u!=root||cnt>1){
					cout<<u<<endl;
				}
			}
		}
		else low[u]=min(low[u],dfn[v]);
		kl++;
	}
}
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		head[i]=-1;
	}
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		add(u,v);
		add(v,u);
	}
	for(int i=1;i<=n;i++){
		if(!dfn[i]){
			root=i;
			tarjan(i,0);
		}
	}
	cout<<kl;
}```
萌新刚学模板,不知道哪里错了
2022/8/18 09:08
加载中...