Submission #1198028

#TimeUsernameProblemLanguageResultExecution timeMemory
1198028Dan4LifePolitical Development (BOI17_politicaldevelopment)C++20
4 / 100
3095 ms23112 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) begin(a),end(a) using ll = long long; using vi = vector<int>; using ar2 = array<int,2>; using ar3 = array<int,3>; const int mxN = (int)5e4+10; const int INF = (int)1e9+1; const ll LINF = (ll)2e18+1; const int MOD = (int)1e9+7; int N, K; vi adj[mxN]; bitset<mxN> edge[mxN]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> N >> K; for(int i = 0; i < N; i++){ int x,y; cin >> x; while(x--){ cin>>y; if(y<x) continue; adj[i].pb(y),edge[i][y]=edge[y][i]=1; } } int ans = 1; for(int i = 0; i < N; i++){ for(int mask = 0; mask < (1<<sz(adj[i])); mask++){ vi xd; int num = __builtin_popcount(mask); if(ans>=num+1 or num+1>K) continue; vi v; v.clear(); bool ok = 1; v.pb(i); for(int j = 0; j < sz(adj[i]); j++){ if(mask>>j&1){ for(auto u : v)ok&=edge[u][adj[i][j]]; if(!ok) break; v.pb(adj[i][j]); } } if(ok) ans=num+1; } } cout << ans << "\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...