Submission #223063

#TimeUsernameProblemLanguageResultExecution timeMemory
223063jovan_bBosses (BOI16_bosses)C++17
67 / 100
1578 ms1120 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; vector <int> drvo[5005]; vector <int> graf[5005]; int cost; int kost[5005]; bool visited[5005]; void bfs(int v){ visited[v] = true; queue <int> q; q.push(v); while(!q.empty()){ int x = q.front(); q.pop(); for(auto c : graf[x]){ if(!visited[c]){ drvo[x].push_back(c); visited[c] = 1; q.push(c); } } } } void dfs(int v){ for(auto c : drvo[v]){ dfs(c); kost[v] += kost[c]; } cost += kost[v]; } int main(){ ios_base::sync_with_stdio(false); cout.precision(10); cout<<fixed; int n; cin >> n; for(int i=1; i<=n; i++){ int x; cin >> x; for(int j=1; j<=x; j++){ int a; cin >> a; graf[a].push_back(i); } } int mincost = 1000000000; for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ visited[j] = 0; kost[j] = 1; drvo[j].clear(); } cost = 0; bfs(i); int mk = 0; for(int j=1; j<=n; j++) if(!visited[j]) mk = 1; if(mk == 1) continue; dfs(i); mincost = min(mincost, cost); } cout << mincost; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...