Submission #758192

#TimeUsernameProblemLanguageResultExecution timeMemory
758192MetalPowerPolitical Development (BOI17_politicaldevelopment)C++14
100 / 100
1175 ms70396 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define fi first #define se second const int MX = 2e5 + 10; int N, K, vis[MX], sz[MX]; map<pii, int> mp; vector<int> adj[MX]; priority_queue<pii, vector<pii>, greater<pii>> pq; int solve(int x){ vector<int> kew; for(int nx : adj[x]){ if(vis[nx]) continue; kew.push_back(nx); } int ns = kew.size(), mk = 1 << ns, ans = 0; for(int mask = 0; mask < mk; mask++){ int num = 1; bool curr = true; for(int j = 0; j < ns; j++){ if((mask >> j & 1) != 1) continue; num++; if(!mp[make_pair(x, kew[j])]){ curr = false; break; } for(int k = j + 1; k < ns; k++){ if((mask >> k & 1) != 1) continue; if(!mp[make_pair(kew[k], kew[j])]){ curr = false; break; } } } if(curr) ans = max(ans, num); } return ans; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N >> K; for(int i = 0; i < N; i++){ int v; cin >> sz[i]; for(int j = 0; j < sz[i]; j++){ cin >> v; adj[i].push_back(v); mp[make_pair(i, v)] = 1; } } for(int i = 0; i < N; i++) pq.push({sz[i], i}); int mx = 1; for(;!pq.empty();){ int curr = pq.top().se; pq.pop(); if(vis[curr]) continue; mx = max(mx, solve(curr)); vis[curr] = 1; for(int nx : adj[curr]){ if(!vis[nx]){ sz[nx]--; pq.push({sz[nx], nx}); } } } cout << mx << '\n'; }
#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...