Submission #1275702

#TimeUsernameProblemLanguageResultExecution timeMemory
1275702_broken_Bosses (BOI16_bosses)C++20
100 / 100
737 ms996 KiB
#include <bits/stdc++.h> #define ll long long #define int long long #define fast_io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define lc (id << 1) #define rc ((id << 1) ^ 1) using namespace std; const long long mod = 1e9 + 7, maxn = 5e3 + 9, base = 1e6 + 7; //#pragma GCC optimize("O3,unroll-loops") //#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") int n,ans1 = 0; vector<int> adj[maxn],adj2[maxn]; int dfs(int v) { int val = 0; for(int u : adj2[v]) val += dfs(u); val++; ans1 += val; return val; } int calc_ans(int v) { for(int i = 0; i <= n;i++) adj2[i].clear(); deque<int> q; q.push_front(v); bitset<5009> mark; mark[v] = true; int tt = 1; while (q.size()) { int u = q.back(); q.pop_back(); for(int x : adj[u]) if(!mark[x]){ q.push_front(x); mark[x] = true; tt++; adj2[u].push_back(x); } } ans1 = 0; dfs(v); if(tt == n) return ans1; else return INT_MAX; } int32_t main() { //fast_io; cin >> n; for(int i = 1;i <= n;i++) { int ki; cin >> ki; for(int j = 1; j <= ki;j++) { int p; cin >> p; adj[p].push_back(i); } } int ans = INT_MAX; for(int i = 1;i <= n;i++) { ans = min(ans , calc_ans(i)); } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...