Submission #606948

#TimeUsernameProblemLanguageResultExecution timeMemory
606948jjianglyBosses (BOI16_bosses)C++14
100 / 100
819 ms648 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() #define siz(x) int(x.size()) #define ll long long #define ar array #define vt vector #define inf INT_MAX #define lnf LLONG_MAX const int nxm = int(5e3) + 7; int n, k, u; vt<vt<int>> e(nxm); int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n; for (int i = 0; i < n; ++i) { cin >> k; for (int j = 0; j < k; ++j) { cin >> u; --u; e[u].push_back(i); } } int ans = inf; for (int i = 0; i < n; ++i) { //vt<vt<int>> e2(nxm); int cnt = 0; int tot = 0; function<void()> bfs = [&]() { vt<bool> vis(n, false); queue<ar<int, 2>> que; que.push({i, 1}); while (que.size()) { u = que.front()[0]; int p = que.front()[1]; que.pop(); if (vis[u]) { continue; } tot += p; ++cnt; //if (p != -1) { //e2[p].push_back(u); //} vis[u] = true; for (int v : e[u]) { if (!vis[v]) { que.push({v, p + 1}); } } } }; bfs(); if (cnt != n) { continue; } //vt<int> d(n, 0); //function<void(int)> dfs = [&](int root) { //int sum = 0; //for (int v : e2[root]) { //dfs(v); //sum += d[v]; //} //d[root] = sum + 1; //tot += d[root]; //}; //dfs(i); ans = min(ans, tot); } cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...