Submission #1271492

#TimeUsernameProblemLanguageResultExecution timeMemory
1271492lucaski2Bosses (BOI16_bosses)C++17
67 / 100
1596 ms1104 KiB
#include <bits/stdc++.h> // #pragma GCC target ("avx,avx2,fma") // #pragma GCC optimize ("Ofast") // #pragma GCC optimize ("unroll-loops") // #define int long long #define double long double #define all(a) (a).begin(), (a).end() #define f first #define s second using namespace std; const char en = '\n'; void solve(int tc) { int n; cin >> n; vector<vector<int>> a(n); for (int i = 0; i < n; i++) { int k; cin >> k; while (k--) { int c; cin >> c; c--; a[c].push_back(i); } } int ans = INT_MAX; vector<bool> visited(n); vector<vector<int>> graph(n); for (int r = 0; r < n; r++) { bitset<5005> visited; vector<vector<int>> graph(n); queue<int> q; q.push(r); visited[r] = true; int cnt = 0; while (q.size()) { cnt++; int cur = q.front(); q.pop(); for (int neigh : a[cur]) { if (visited[neigh]) continue; graph[cur].push_back(neigh); q.push(neigh); visited[neigh] = true; } } if (cnt < n) continue; int ret = 0; function<int(int)> dfs = [&](int cur) { int tot = 1; // cout << cur << endl; for (int neigh : graph[cur]) { tot += dfs(neigh); } ret += tot; return tot; }; dfs(r); ans = min(ret, ans); } cout << ans << en; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int t = 1; for (int i = 1; i <= t; i++) { solve(i); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...