Submission #467902

#TimeUsernameProblemLanguageResultExecution timeMemory
467902JovanBPolitical Development (BOI17_politicaldevelopment)C++17
100 / 100
307 ms28556 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; const int N = 50000; set <int> graf[N+5]; bool ima[15][15]; bool moze[(1<<15)]; int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; int n, k; cin >> n >> k; priority_queue <pair <int, int>, vector <pair <int, int>>, greater <pair <int, int>>> q; for(int i=1; i<=n; i++){ int x; cin >> x; for(int j=1; j<=x; j++){ int y; cin >> y; y++; graf[i].insert(y); } q.push({graf[i].size(), i}); } int res = 1; while(!q.empty()){ int v = q.top().second; int deg = q.top().first; q.pop(); if(graf[v].size() != deg) continue; vector <int> vec; for(auto c : graf[v]) vec.push_back(c); for(int i=0; i<deg; i++){ for(int j=i+1; j<deg; j++){ ima[i][j] = ima[j][i] = 0; if(graf[vec[i]].find(vec[j]) != graf[vec[i]].end()) ima[i][j] = ima[j][i] = 1; } } for(int mask=1; mask<(1<<deg); mask++) moze[mask] = 0; moze[0] = 1; for(int mask=0; mask<(1<<deg); mask++){ for(int j=0; j<deg; j++){ if((1 << j) & mask){ int x = mask ^ (1 << j); if(!moze[x]) break; moze[mask] = 1; for(int k=j+1; k<deg; k++) if((1 << k) & mask) moze[mask] &= ima[j][k]; break; } } if(moze[mask]) res = max(res, 1 + __builtin_popcount(mask)); } for(auto c : graf[v]){ graf[c].erase(v); q.push({graf[c].size(), c}); } graf[v].clear(); } cout << res << "\n"; return 0; }

Compilation message (stderr)

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:38:27: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   38 |         if(graf[v].size() != deg) continue;
      |            ~~~~~~~~~~~~~~~^~~~~~
#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...