92分WA求助
查看原帖
92分WA求助
200044
JS_TZ_ZHR楼主2020/5/17 08:12

RT,有dalao能帮萌新看看吗

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v,cnt,check[20005],ans;
int low[20005],dfn[20005];
vector<int>ve[20005];
void tarjan(int now,int fa) {
	dfn[now]=low[now]=++cnt;
	int ch=0;
	for(int i=0; i<ve[now].size(); i++) {
		int y=ve[now][i];
		if(!dfn[y]) {
			tarjan(y,fa);
			low[now]=min(low[now],low[y]);
			if(low[y]>=dfn[now]&&now!=fa)check[now]=true;
			if(now==fa)ch++;
		}
		low[now]=min(low[now],dfn[y]);
	}
	if(ch>=2&&u==fa)check[now]=true;
}
int main() {
	scanf("%d%d",&n,&m);
	while(m--) {
		scanf("%d%d",&u,&v);
		ve[u].push_back(v);
		ve[v].push_back(u);
	}
	for(int i=1; i<=n; i++)
		if(!dfn[i])tarjan(i,i);
	for(int i=1; i<=n; i++)
		ans+=check[i];
	printf("%d\n",ans);
	for(int i=1; i<=n; i++)
		if(check[i])printf("%d ",i);
	puts("");
}
2020/5/17 08:12
加载中...