Submission #1305371

#TimeUsernameProblemLanguageResultExecution timeMemory
1305371JerBosses (BOI16_bosses)C++20
0 / 100
1 ms568 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 5005; vector<int> con[MAXN], pos[MAXN]; bool used[MAXN]; int val[MAXN]; int n, m; void clear() { for (int i = 0; i <= n; i++) con[i].clear(), used[i] = false, val[i] = 0; } void create(int curr) { used[curr] = true; for (auto i : pos[curr]) if (!used[i]) con[curr].push_back(i); for (auto i : con[curr]) create(i); } bool connected() { for (int i = 1; i <= n; i++) if (!used[i]) return false; return true; } int dfs(int curr) { int sub = 0; for (auto i : con[curr]) sub += dfs(i); return val[curr] = sub + 1; } int get_sum() { int sum = 0; for (int i = 1; i <= n; i++) sum += val[i]; return sum; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n; for (int i = 1; i <= n; i++) { cin >> m; int p; for (int j = 0; j < m; j++) cin >> p, pos[p].push_back(i); } int res = INT_MAX; for (int i = 1; i <= n; i++) { clear(); create(i); if (connected()) dfs(i), res = min(res, get_sum()); } cout << res << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...