Submission #943821

#TimeUsernameProblemLanguageResultExecution timeMemory
943821PringPolitical Development (BOI17_politicaldevelopment)C++17
100 / 100
377 ms34752 KiB
#include <bits/stdc++.h> using namespace std; #ifdef MIKU const string dbmc = "\033[1;38;2;57;197;187m", dbrs = "\033[0m"; #define debug(x...) cout << dbmc << "[" << #x << "]: ", dout(x) void dout() { cout << dbrs << endl; } template <typename T, typename ...U> void dout(T t, U ...u) { cout << t << (sizeof...(u) ? ", " : ""); dout(u...); } #else #define debug(...) 39 #endif #define int long long #define fs first #define sc second #define mp make_pair #define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++) typedef pair<int, int> pii; const int MXN = 50005; int n, k, ans = 1; vector<int> edge[MXN]; int in[MXN]; bitset<MXN> ban; set<pii> S; unordered_set<int> EA; bitset<1 << 10> dp; int POPCNT(int I) { return bitset<16>(I).count(); } int calc(int id) { debug(id); ban[id] = true; vector<int> v; for (auto &i : edge[id]) { if (ban[i]) continue; S.erase(S.find(mp(in[i], i))); S.insert(mp(--in[i], i)); v.push_back(i); } int n = v.size(); // for (auto &i : v) cout << i << ' '; // cout << endl; dp.reset(); dp[0] = true; FOR(i, 0, n) { int I = 0; FOR(j, 0, i) if (EA.find(v[j] * MXN + v[i]) != EA.end()) I ^= (1 << j); for (int j = I; true; j = ((j - 1) & I)) { dp[j ^ (1 << i)] = dp[j]; if (j == 0) break; } } int ans = 0; FOR(I, 0, 1 << n) if (dp[I]) ans = max(ans, POPCNT(I)); return ans + 1; } void miku() { int c, x; cin >> n >> k; FOR(i, 0, n) { cin >> c; while (c--) { cin >> x; edge[i].push_back(x); EA.insert(i * MXN + x); } } FOR(i, 0, n) S.insert(mp(in[i] = edge[i].size(), i)); FOR(i, 0, n) { pii p = *S.begin(); S.erase(*S.begin()); ans = max(ans, calc(p.sc)); } cout << ans << '\n'; } int32_t main() { cin.tie(0) -> sync_with_stdio(false); cin.exceptions(cin.failbit); miku(); return 0; }

Compilation message (stderr)

politicaldevelopment.cpp: In function 'long long int calc(long long int)':
politicaldevelopment.cpp:11:20: warning: statement has no effect [-Wunused-value]
   11 | #define debug(...) 39
      |                    ^~
politicaldevelopment.cpp:36:5: note: in expansion of macro 'debug'
   36 |     debug(id);
      |     ^~~~~
#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...