Submission #1087370

#TimeUsernameProblemLanguageResultExecution timeMemory
1087370MercubytheFirstNewspapers (CEOI21_newspapers)C++17
6 / 100
12 ms348 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; #define endl '\n' #ifdef LOCAL #include "debug.h" #else #define debug(...) 37 #endif template <typename T> void print(vector<T> v) { const int n = v.size(); for(int i = 1; i < n; ++i) { cout << i << " : " << v[i] << '\n'; }cout << "\n"; } inline void solve(){ int n, m; cin >> n >> m; if(m >= n) { cout << "NO\n"; return; } vector<vector<int> > g(n + 1); for(int i = 0; i < m; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } assert(g[0].empty()); vector<int> v(n + 1, true); vector<int> sol; v[0] = false; while((int)sol.size() <= 5 * n) { int mx1 = 0, mx2 = 0; for(int i = 1; i <= n; ++i) { if(count_if(g[i].begin(), g[i].end(), [&](int to) { return v[to]; }) == 1) { auto it = find_if(g[i].begin(), g[i].end(), [&](int to) { return v[to]; }); assert(it != g[i].end()); if(v[i]) { if(g[*it].size() > g[mx1].size()) { mx1 = *it; } } else { if(g[*it].size() > g[mx2].size()) { mx2 = *it; } } } } int mx = (mx1 == 0 ? mx2 : mx1); if(mx == 0) { for(int i = 1; i <= n; ++i) { if(v[i] == 1 and g[i].size() >= g[mx].size()) { mx = i; } } } assert(mx != 0); v[mx] = false; sol.push_back(mx); vector<int> nv(n + 1); bool ok = false; for(int i = 1; i <= n; ++i) { for(int to : g[i]) { nv[i] |= v[to]; } ok |= (nv[i]); } // cout << mx << "\n"; // print(nv); v = nv; if(!ok) { break; } } cout << "YES\n" << sol.size() << "\n"; for(int x : sol) { cout << x << ' '; } cout << endl; } signed main(){ #ifdef LOCAL freopen("test.in", "r", stdin); freopen("err.txt", "w", stderr); #endif ios_base::sync_with_stdio(0); cin.tie(NULL); // signed t; cin >> t; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...