萌新妹子WA on #2 求调
查看原帖
萌新妹子WA on #2 求调
374756
忘怜城羡楼主2024/3/7 21:20
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e4+7;
vector<int> g[MAXN];
stack<pair<int,int> > ans;
bool vis[MAXN];
bool dfs(int x,int from,int t)
{
	if(vis[x]==1)
	{
		if(x==t)
		{
			int sum=0;
			for(int i(0);i<g[t].size();++i)
				if(!vis[g[t][i]])
				{
					sum++;
					ans.push(make_pair(t,g[t][i]));
				}
			if(sum<2)
				while(sum--)
					ans.pop();
			else
			{
				printf("YES\n%d\n",ans.size());
				while(!ans.empty())
				{
					printf("%d %d\n",ans.top().first,ans.top().second);
					ans.pop();
				}
				return 1;
			}
			return 0;
		}
		else
		return 0;
	}
	vis[x]=1;
	for(int i(0);i<g[x].size();++i)
		if(g[x][i]!=from)
		{
			ans.push(make_pair(x,g[x][i]));
			if(dfs(g[x][i],x,t))
				return 1;
			else 
				ans.pop();
		}
	vis[x]=0;
	return 0;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		bool op=0;
		int n,m;
		scanf("%d%d",&n,&m);
		for(int i(1);i<=n;++i)
			g[i].clear(),vis[i]=0;
		for(int i(1);i<=m;++i)
		{
			int u,v;
			scanf("%d%d",&u,&v);
			g[u].push_back(v);
			g[v].push_back(u);
		}
		for(int i(1);i<=n;++i)
			if(g[i].size()>=4&&dfs(i,i,i))
			{
				op=1;
				break;
			}
		if(!op)
		printf("NO\n");
	}
	return 0;
}
2024/3/7 21:20
加载中...