89分求助
查看原帖
89分求助
1260978
xycsc23楼主2024/7/17 16:55

代码如下:

#include<bits/stdc++.h>
using namespace std;
#define maxn 505
int g[maxn][maxn];
int du[maxn];
int circuit[maxn];
int n,e,circuitpos,i,j,x,y,start;
void find_circuit(int i){
	int j;
	for(j=1;j<=n;j++)
		if(g[i][j] >= 1){
			g[j][i]--;
			g[i][j]--;
			find_circuit(j);
		} 
	circuit[++circuitpos] = i;
}
int main() {
	memset(g,0,sizeof(g));
	cin >> e;
	for(i = 1; i <= e; i++){
		cin >>x >>y;
		g[y][x]++;
		g[x][y]++;
		du[x]++;
		du[y]++;
		n=max(n, max(x, y));
	}
	start = 1;
	for(i = 1; i <= n; i++)
		if(du[i]%2 == 1){
			start = i;
			break;
		}		
	circuitpos = 0;
	find_circuit(start);
	for(i = circuitpos; i >= 1; i--)
		cout << circuit[i] << '\n';
	return 0;
}
2024/7/17 16:55
加载中...