This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |