Submission #786050

#TimeUsernameProblemLanguageResultExecution timeMemory
786050OzyNewspapers (CEOI21_newspapers)C++17
100 / 100
52 ms8660 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; #define lli long long int #define debug(a) cout << #a << " = " << a << endl #define debugsl(a) cout << #a << " = " << a << ", " #define rep(i,a,b) for(int i = (a); i <= (b); i++) #define repa(i,a,b) for(int i = (a); i >= (b); i--) #define MAX 1000 lli a,b,m,n,ini; vector<lli> hijos[MAX+2]; vector<lli> x,res; lli tam[MAX+2]; void pre_dfs(lli pos, lli padre) { tam[pos] = 1; for(auto h : hijos[pos]) { if (h == padre) continue; pre_dfs(h,pos); tam[pos] = max(tam[h]+1,tam[pos]); } } bool checa(lli pos, lli padre) { lli sig = -1; lli may = 0; x.push_back(pos); for(auto h : hijos[pos]) { if(h == padre) continue; if (tam[h] > 2) { may++; sig = h; } } if (may > 1) return false; for(auto h : hijos[pos]) { if (h == padre) continue; if (tam[h] == 2) { if (sig == -1) sig = h; else { x.push_back(h); x.push_back(pos); } } } //debugsl(pos); //debug(may); if (may == 0 && sig == -1) return true; return checa(sig,pos); } void sepuede(lli raiz) { //debug("otro"); x.clear(); pre_dfs(raiz,0); if (checa(raiz,0)){ if (res.empty() || res.size() > x.size()) { ini = raiz; swap(res,x); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; rep(i,1,m) { cin >> a >> b; hijos[a].push_back(b); hijos[b].push_back(a); } if (m >= n) { cout << "NO"; return 0; } if (n == 1) { cout << "YES\n"; cout << "1\n"; cout << "1\n"; return 0; } if (n == 2) { cout << "YES\n"; cout << "2\n"; cout << "1 1\n"; return 0; } rep(i,1,n) { if (hijos[i].size() == 1) sepuede(i); } if (!res.empty()) { cout << "YES\n"; cout << (res.size()*2-2) << "\n"; for(auto r : res) if (r != ini) cout << r << ' '; reverse(res.begin(), res.end()); for(auto r : res) if (r != ini) cout << r << ' '; return 0; } else cout << "NO"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...