Submission #374021

#TimeUsernameProblemLanguageResultExecution timeMemory
374021vishesh312Bosses (BOI16_bosses)C++17
100 / 100
873 ms748 KiB
#include "bits/stdc++.h" using namespace std; /* #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using ordered_set = tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>; */ #define all(x) begin(x), end(x) #define sz(x) (int)x.size() using ll = long long; const int mod = 1e9+7; vector<vector<int>> adj; vector<bool> vis; ll cost; int n, cur; void dfs(int u, ll c) { vis[u] = true; ++cur; cost += c; for (auto v : adj[u]) { if (!vis[v]) { dfs(v, c+1); } } } void bfs(int s) { queue<array<ll, 2>> q; q.push({s, 1}); vis[s] = true; while (!q.empty()) { int u = q.front()[0], d = q.front()[1]; q.pop(); ++cur; cost += d; for (auto v : adj[u]) { if (!vis[v]) { vis[v] = true; q.push({v, d+1}); } } } } void solve(int tc) { cin >> n; adj.resize(n); vis.resize(n); for (int i = 0; i < n; ++i) { int m; cin >> m; while (m--) { int u; cin >> u; --u; adj[u].push_back(i); } } ll ans = 1e16; for (int i = 0; i < n; ++i) { fill(all(vis), false); cost = 0, cur = 0; bfs(i); if (cur == n) ans = min(ans, cost); } cout << ans << '\n'; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int tc = 1; //cin >> tc; for (int i = 1; i <= tc; ++i) solve(i); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...