Submission #953100

#TimeUsernameProblemLanguageResultExecution timeMemory
953100SacharlemagneNewspapers (CEOI21_newspapers)C++17
6 / 100
266 ms524288 KiB
#include <vector> #include <iostream> #include <queue> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n,m,a,b; cin >> n >> m; vector<vector<int>> adj(n); while (m--) { cin >> a >> b; adj[--a].push_back(--b); adj[b].push_back(a); } vector<pair<int,int>> par(1 << n); queue<int> q; q.push((1<<n)-1); vector<int> dist(1<<n, 100); dist[(1<<n)-1] = 0; while (!q.empty()) { int node = q.front(); q.pop(); int i = node; vector<int> access(n); for (int j = 0; j<n; ++j) { if (!(i & (1 << j))) continue; for (int u : adj[j]) ++access[u]; } for (int on = 0; on<n; ++on) { int nei = 0; if (i && (1 << on)) { for (int u : adj[on]) { --access[u]; } } for (int j = 0; j<n; ++j) if (access[j]) nei += (1 << j); if (i && (1 << on)) for (int u : adj[on]) ++access[u]; if (nei == 0) { par[nei] = {node, on}; vector<int> ans; ans.reserve(dist[node]+1); while (nei != ((1 << n)-1)) { ans.push_back(par[nei].second); nei = par[nei].first; } cout << "YES\n"; cout << dist[node]+1 << '\n'; for (int i = ans.size()-1; i>=0;--i) cout << ans[i]+1 << ' '; return 0; } if (dist[nei] == 100) { par[nei] = {node, on}; dist[nei] = dist[node]+1; q.push(nei); } } } cout << "NO"; }

Compilation message (stderr)

newspapers.cpp: In function 'int main()':
newspapers.cpp:29:16: warning: '<<' in boolean context, did you mean '<'? [-Wint-in-bool-context]
   29 |    if (i && (1 << on)) {
      |             ~~~^~~~~~
newspapers.cpp:35:16: warning: '<<' in boolean context, did you mean '<'? [-Wint-in-bool-context]
   35 |    if (i && (1 << on)) for (int u : adj[on]) ++access[u];
      |             ~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...