TLE#7
查看原帖
TLE#7
742533
hzxphy楼主2023/9/27 21:06
#include <bits/stdc++.h>
using namespace std;
struct edge{
	int u, v;
};
edge edges[1050];
set<int> s;
int D[2050];
int g[2050][2050];
int a[2050];
int GIN;
int M;
map<int, int> IO_m;
int OI_m[2050];
inline void Append(int u, int v) {
	g[u][v]++; g[v][u]++;
	D[u]++;
	D[v]++;
}
inline int InGraph() {
	for (int i = 1; i <= M; i++) {
		Append(IO_m[edges[i].u], IO_m[edges[i].v]);
	}
	for (int i = 1; i <= (int)s.size(); i++) {
		if (D[i] & 1) {
			return i;
		}
	}
	return 1;
}
inline void DFS(int U, int Len) {
	if (Len == M + 1) {
		for (int i = 1; i <= M + 1; i++) {
			cout << OI_m[a[i]] << '\n';
		}
//		cout << '\n';
		exit(0);
	}
	for (int i = 1; i <= (int)s.size(); i++) {
		if (!g[U][i]) {
			continue;
		}
		g[U][i]--;g[i][U]--;;
		a[Len + 1] = i;
		DFS(i, Len + 1);
		g[U][i]++;g[i][U]++;
	}
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cin >> M;
	for (int i = 1; i <= M; i++) {
		cin >> edges[i].u >> edges[i].v;
		s.insert(edges[i].u);
		s.insert(edges[i].v);
	}
	int c = 0;
	for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
		c++;
		IO_m[*it] = c;
		OI_m[c] = *it;
	}
	GIN = InGraph();
	a[1] = GIN;
	DFS(GIN, 1);
	return 0;
}
2023/9/27 21:06
加载中...