#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
vector<int> gph[MAXN];
int par[MAXN];
pair<int, int> dfs(int x, int p = -1) {
pair<int, int> ret(0, x);
for (int y : gph[x]) {
if (y != p) {
par[y] = x;
auto res = dfs(y, x);
res.first++;
ret = max(ret, res);
}
}
return ret;
}
int main() {
int n, m;
cin >> n >> m;
if (m != n - 1) {
cout << "NO" << endl;
return 0;
}
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
gph[u].push_back(v);
gph[v].push_back(u);
}
int u = dfs(1).second;
int v = dfs(u).second;
vector<int> path;
for (int i = v; i != u; i = par[i]) {
path.push_back(i);
}
path.push_back(u);
cout << "YES" << endl;
cout << 2 * path.size() << endl;
for (int i = 0; i < path.size(); i++) {
cout << path[i] << " ";
}
reverse(path.begin(), path.end());
for (int i = 1; i < path.size(); i++) {
cout << path[i] << " ";
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |