P2731 [USACO3.3]骑马修栅栏 Riding the Fences

本应很简单的东西。。。

Miku

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int u,v;
int m;
int fr[5001][5001];
int ans[10205];
int p;
int a;
int maxn;
int du[10205];
int minn=1e6;
int f=0;
void dfs(int now){
	for(int i=minn;i<=maxn;++i){
		if(fr[now][i]){
			fr[now][i]--;
			fr[i][now]--;
			
			dfs(i);
		}
	}
	p++;
	ans[p]=now;
	return ;
}
int main(){
	scanf("%d",&m);
	for(int i=1;i<=m;++i){
		scanf("%d%d",&u,&v);
		fr[u][v]++;
		fr[v][u]++;
		maxn=max(maxn,max(u,v));
		minn=min(minn,min(u,v));
		du[u]++;
		du[v]++;
	}
	for(int i=minn;i<=maxn;++i){
	if(du[i]%2){
		dfs(i);
		for(int i=p;i>=1;--i){
			cout<<ans[i]<<endl;
			}
			return 0;
		}
	}
	dfs(1);
		for(int i=p;i>=1;--i)
			cout<<ans[i]<<endl;
	return 0;
}
posted @ 2020-08-05 14:19  Simex  阅读(100)  评论(0编辑  收藏  举报