听说灌水区人多
  • 板块灌水区
  • 楼主JackHu0117
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/29 20:00
  • 上次更新2023/11/2 17:16:09
查看原帖
听说灌水区人多
647952
JackHu0117楼主2023/9/29 20:00

P2731 WA#8

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
int tu[1020][1020];//邻接矩阵存图
int to[1020];//度
int road[1020];//记录路径
int n,m,st=1;//点边起点
int l;
void dfs(int u){//从某点开始跑欧拉路
	for(int i=1;i<=n+1;i++){//找连着的点
		if(tu[u][i]>=1){//连接
			tu[u][i]--;tu[i][u]--;//删边防止重跑
			dfs(i);//找下一个边
		}
	}
	road[++l]=u;
}
int main(){
//	freopen("P2731_8.in","r",stdin);
//	freopen("P27311.in","w",stdout);
	cin>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		tu[u][v]++;tu[v][u]++;
		to[u]++;to[v]++;//度++
		n=max(max(u,v),n);//求点个数
	}
	for(int i=1;i<=n+1;i++){
		if(to[i]%2==1){//找到奇点
			st=i;break;
		}
	}
	dfs(st);
	for(int i=l;i>=1;i--){
		cout<<road[i]<<endl;
	}
	return 0;
}
2023/9/29 20:00
加载中...