Submission #745425

#TimeUsernameProblemLanguageResultExecution timeMemory
745425MilosMilutinovicPolitical Development (BOI17_politicaldevelopment)C++14
100 / 100
2580 ms35620 KiB
#include <bits/stdc++.h> using namespace std; const int N = 5e4 + 10; int n, k, id[N], f[N]; set<int> g[N]; vector<int> rg[N]; bool was[N]; int main() { scanf("%d%d", &n, &k); set<pair<int, int>> st; for (int i = 0; i < n; i++) { int d; scanf("%d", &d); for (int j = 0; j < d; j++) { int x; scanf("%d", &x); g[i].insert(x); rg[x].push_back(i); } st.emplace(d, i); } for (int i = 0; i < n; i++) id[i] = -1; int ans = 0; while (!st.empty()) { auto it = st.begin(); int v = it->second; st.erase(it); vector<int> ver(1, v); for (int x : g[v]) ver.push_back(x); int deg = (int) ver.size(); for (int i = 0; i < deg; i++) id[ver[i]] = i; for (int x : ver) { f[x] = (1 << id[x]); for (int y : ver) if (g[x].find(y) != g[x].end()) f[x] += (1 << id[y]); } for (int mask = 0; mask < (1 << deg); mask++) { bool ok = true; for (int i = 0; i < deg; i++) if (mask >> i & 1) { if ((f[ver[i]] & mask) != mask) ok = false; } if (ok) ans = max(ans, __builtin_popcount(mask)); } for (int x : rg[v]) g[x].erase(v); for (int x : ver) id[x] = -1, f[x] = 0; } printf("%d\n", ans); return 0; }

Compilation message (stderr)

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:9:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     scanf("%d%d", &n, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~
politicaldevelopment.cpp:13:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   13 |         scanf("%d", &d);
      |         ~~~~~^~~~~~~~~~
politicaldevelopment.cpp:16:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |             scanf("%d", &x);
      |             ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...