#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int mx;
vector<int> v;
vector<bool> vis;
vector<vector<bool>> edg;
vector<vector<int>> E;
void dfs(int x) {
mx = max(mx, (int)v.size());
for (auto i : E[x]) {
if (vis[i]) continue;
bool ok = true;
for (auto j : v) {
if (!edg[i][j] || !edg[j][i]) {
ok = false;
break;
}
}
if (!ok) continue;
vis[i] = true;
v.push_back(i);
dfs(i);
vis[i] = false;
v.pop_back();
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
int n, k;
cin >> n >> k;
E.assign(n, {});
edg.assign(n, vector<bool>(n));
for (int i = 0; i < n; i++) {
int d;
cin >> d;
while (d--) {
int y;
cin >> y;
edg[i][y] = true;
if (edg[y][i]) {
E[i].push_back(y);
E[y].push_back(i);
}
}
}
for (int i = 0; i < n; i++) {
v = {i};
vis.assign(n, false);
vis[i] = true;
dfs(i);
}
cout << mx;
}
# | 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... |