Submission #207942

#TimeUsernameProblemLanguageResultExecution timeMemory
207942BlerarghBosses (BOI16_bosses)C++17
67 / 100
1309 ms262148 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> ii; typedef pair<ld,ld> id; #define FOR(i, a, b) for(int i=(a); i<=(b); i++) #define ROF(i, a, b) for(int i=(a); i>=(b); i--) #define MEM(x, v) memset(x, v, sizeof(x)) #define SORT(x) sort((x).begin(), (x).end()) #define CMPSORT(x, cp) sort((x).begin(), (x).end(), cp) #define FAST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #define getchar_unlocked _getchar_nolock #define f first #define s second #define ins insert #define e emplace #define eb emplace_back #define ef emplace_front #define p push #define pf push_front #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ft front #define bk back #define pp pop #define ppb pop_back #define ppf pop_front #define db cout<<"YEET\n"; #define ct(x) cout<<x<<'\n'; const ll MOD = 1e9+7; //998244353 const ll MX = 2e5+5; const ll INF = 1e18; const ld PI = acos((ld)-1); vector<ll> dfsadjlist[10010]; ll preorder[10010], idx=0, salary=0, cnt; ll n, k, x; ll minn=INF; bool visited[10010]; queue<ii> bfs; void dfs(ll node, ll parent){ preorder[node] = ++idx; for (auto edge : dfsadjlist[node]){ if (edge != parent) dfs(edge, node); } ll subtreesize = idx-preorder[node]+1; salary+=subtreesize; return; } int main(){ FAST vector<ll> adjlist[10010]; cin >> n; FOR(i, 1, n){ cin >> k; FOR(j, 1, k){ cin >> x; adjlist[x].pb(i); } } FOR(i, 1, n){ MEM(visited, 0); MEM(dfsadjlist, 0); cnt=0; bfs.e(i, -1); while (!bfs.empty()){ ll node = bfs.ft().f; ll parent = bfs.ft().s; bfs.pp(); if (visited[node]) continue; visited[node] = true; if (parent!=-1) dfsadjlist[parent].pb(node); cnt++; for (auto edge : adjlist[node]){ if (visited[edge]) continue; bfs.e(edge,node); } } if (cnt != n) continue; salary=0; dfs(i, i); minn=min(minn, salary); } cout << minn; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...