Submission #884351

#TimeUsernameProblemLanguageResultExecution timeMemory
884351vjudge1Bosses (BOI16_bosses)C++17
100 / 100
812 ms1088 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define pll array<ll, 2> #define int long long const int N = 5e3 + 4; const ll INF = 1LL << 62; int n; bool vis[N]; vector<int> in[N], g[N]; pll dfs(int v) { pll ret = {0, 0}; for (int u : g[v]) { pll res = dfs(u); ret[0] += res[0]; ret[1] += res[1]; } ++ret[0]; ret[1] += ret[0]; return ret; } ll bfs(int s) { queue<int> q; q.push(s); vis[s] = true; while (q.size() > 0) { int v = q.front(); q.pop(); for (int u : in[v]) { if (vis[u] == false) { vis[u] = true; g[v].pb(u); q.push(u); } } } return dfs(s)[1]; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i < n; ++i) { int k; cin >> k; while (k--) { int v; cin >> v; --v; in[v].pb(i); } } ll ans = INF; for (int i = 0; i < n; ++i) { ll res = bfs(i); bool seeAll = true; for (int j = 0; j < n; ++j) { seeAll &= vis[j]; g[j].clear(); vis[j] = false; } if (seeAll == true) { ans = min(ans, res); } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...