#include <bits/stdc++.h>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define int long long
using namespace std;
signed main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
int n,k; cin >> n >> k;
vector<vector<int>> pre_neigh(n);
vector<vector<int>> neigh(n);
vector<vector<bool>> is_connect(n,vector<bool>(n,false));
vector<int> a(n);
vector<int> pa(n);
vector<int> d(n);
for (int i = 0; i < n; i++)
{
cin >> d[i];
pre_neigh[i].resize(d[i]);
for (int j = 0; j < d[i]; j++) cin >> pre_neigh[i][j];
a[i]=i;
}
sort(all(a), [&](int _a, int b) {return sz(pre_neigh[_a]) < sz(pre_neigh[b]); });
for (int i = 0; i < n; i++) pa[a[i]]=i;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < sz(pre_neigh[a[i]]); j++)
{
if(i<pa[pre_neigh[a[i]][j]]) {
neigh[i].push_back(pa[pre_neigh[a[i]][j]]);
is_connect[pa[pre_neigh[a[i]][j]]][i]=true,
is_connect[i][pa[pre_neigh[a[i]][j]]]=true;
}
}
sort(all(neigh[i]));
}
int mx=0;
for (int i = 0; i < n; i++)
{
vector<int> cnt;
int j=0;
while(true){
if(j==sz(neigh[i])){
if(sz(cnt)==0) break;
j=cnt.back()+1;
cnt.pop_back();
continue;
}
bool b=true;
for (auto u: cnt) { if(!is_connect[neigh[i][u]][neigh[i][j]]) b=false; }
if(b) cnt.push_back(j);
mx=max(mx,sz(cnt)+1);
j++;
}
}
cout << mx << "\n";
return 0;
}
# | 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... |