求助(玄关)
  • 板块题目总版
  • 楼主Danny_chan
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/27 22:36
  • 上次更新2024/11/28 11:40:51
查看原帖
求助(玄关)
1032960
Danny_chan楼主2024/11/27 22:36

这里

代码:

#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int>a[100010];
int cnt=0;
stack<int>s;
void dfs(int x){
	for(int i=0;i<a[x].size();i++){
		if(a[x][i]==0) continue;
		int u=a[x][i];
		a[x][i]=0;
		for(int j=0;j<a[u].size();j++){
			if(a[u][j]==x){
				a[u][j]=0;
			}
		}
		dfs(u);
	}
	s.push(x);
}
int main(){
	cin>>n>>m;
	while(m--){
		int x,y;
		cin>>x>>y;
		a[x].push_back(y);
	}
	int x=0;
	for(int i=1;i<=n;i++){
		if(a[i].size()==0){
			cout<<"No";
			return 0;
		}
		if(a[i].size()%2==1){
			cnt++;
			x=i;	
		}
	}
	if(cnt!=0&&cnt!=2){
		cout<<"No";
		return 0; 
	}
	if(cnt==0){
		dfs(x);
	}
	if(cnt==2){
		dfs(1);
	}
	while(!s.empty()){
		cout<<s.top()<<" ";
		s.pop();
	}
	return 0;
} 
2024/11/27 22:36
加载中...