AC #7,TLE#9 其余wa
查看原帖
AC #7,TLE#9 其余wa
1234324
god_std楼主2025/7/30 16:36
#include<bits/stdc++.h>
#define int long long
#define N (int)1e5+10
using namespace std;
int n,m,in[N],out[N];
vector <int> g[N];
vector <bool> vis[N];
int c1=-1,c2=-1;
queue <int> q;
void output()
{
	while(!q.empty()){
		cout<<q.front()<<' ';
		q.pop();
	}exit(0);
	return ;
}
void dfs(int now,int goal)
{
	q.push(now);
	if(q.size()==m+1){output();}
	int len=g[now].size();
	int minn=n+1;
	for(int i=0;i<len;i++)
		if(vis[now][i]==false)
			minn=min(minn,g[now][i]);
	for(int i=0;i<len;i++)
		if(g[now][i]==minn){
			vis[now][i]=true;
			break;
		}		
	dfs(minn,goal);
}
signed main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		g[u].push_back(v);
		vis[u].push_back(false);
		in[v]++;out[u]++;
	}
	for(int i=1;i<=n;i++)
	{
		if(in[i]!=out[i])
		{
			if(abs(in[i]-out[i])!=1)
				return cout<<"No",0;
			int c=in[i]-out[i];
			if(c==1)c1=i;
			else c2=i;
		}
	}
	if(!(c1==-1&&c2==-1||c1!=-1&&c2!=-1))
		return cout<<"No",0;
	dfs((c2==-1)?1:c2,(c2==-1)?1:c1);
	return 0;
}
2025/7/30 16:36
加载中...