제출 #1271354

#제출 시각아이디문제언어결과실행 시간메모리
1271354rayan_bdBosses (BOI16_bosses)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 5005; int ans = 0, v[mxN], vis[mxN]; vector<int> adj[mxN], nadj[mxN]; void dfs(int u){ // cout << u << endl; vis[u] = 1; int t = 0; for(auto it : nadj[u]){ if(!vis[it]){ dfs(it); t += v[it]; } } v[u] = t + 1; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); int n, u; cin >> n; pair<int, int> mx = {0, 0}; for(int i = 1, k; i <= n; ++i){ cin >> k; while(k --){ cin >> u; adj[u].push_back(i); mx = max(mx, {adj[u].size(), u}); } } queue<int> q; q.push(mx.second); while(q.size()){ int sz = q.size(); while(sz--){ int tp = q.front(); q.pop(); vis[tp] = 1; for(auto it : adj[tp]){ if(!vis[it]){ vis[it] = 1; q.push(it); nadj[tp].push_back(it); } } } } for(int i = 1; i <= n; ++i) vis[i] = 0; dfs(mx.second); for(int i = 1; i <= n; ++i) ans += v[i]; cout << ans << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...