제출 #999273

#제출 시각아이디문제언어결과실행 시간메모리
999273crafticatNewspapers (CEOI21_newspapers)C++17
52 / 100
43 ms8272 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> g; int MAX_DEP = 0; vector<int> ans; void dfs(int x, int p) { if (g[x].size() == 1 && p != 0) return; ans.push_back(x); for (auto child : g[x]) { if (child == p) continue; dfs(child,x); } ans.push_back(x); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; g.resize(n + 1); for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; g[a].push_back(b); g[b].push_back(a); } if (m != n -1) { cout << "NO\n"; return 0; } if (n == 1) { cout << "YES\n"; cout << "1\n"; cout << "1\n"; return 0; } vector<int> siz(n + 1), siz2(n + 1); for (int i = 1; i <= n; ++i) { if (g[i].size() == 1) { siz[i]--; for (auto child : g[i]) { siz[child]--; } } siz[i]+= g[i].size(); } siz2 = siz; for (int i = 1; i <= n; ++i) { if (siz[i] == 1 && g[i].size() <= 10) { for (auto child : g[i]) siz2[child]--; } } for (int i = 1; i <= n; ++i) { if (siz2[i] > 2) { cout << "NO\n"; return 0; } } dfs(1,0); cout << "YES\n"; cout << ans.size() << "\n"; for (auto x: ans) { cout << x << " "; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...