제출 #484664

#제출 시각아이디문제언어결과실행 시간메모리
484664minhcoolBosses (BOI16_bosses)C++17
100 / 100
595 ms3012 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pb push_back #define mp make_pair #define foru(i, l, r) for(int i = l; i <= r; i++) #define ford(i, r, l) for(int i = r; i >= l; i--) typedef pair<int, int> ii; typedef pair<ii, int> iii; typedef pair<ii, ii> iiii; const int N = 1e5 + 5; const int oo = 1e18 + 7, mod = 1e9 + 7; int n; vector<int> Adj[N]; int ans = oo; int mn_dist[N]; void bfss(int u){ for(int i = 1; i <= n; i++) mn_dist[i] = oo; mn_dist[u] = 0; queue<int> bfs; bfs.push(u); while(!bfs.empty()){ int u = bfs.front(); bfs.pop(); for(auto v : Adj[u]){ if(mn_dist[v] != oo) continue; mn_dist[v] = mn_dist[u] + 1; bfs.push(v); } } int tol = 0; for(int i = 1; i <= n; i++){ //cout << u << " " << i << " " << mn_dist[i] << "\n"; if(mn_dist[i] == oo){ tol += mn_dist[i]; break; } tol += mn_dist[i]; } ans = min(ans, tol); } void process(){ cin >> n; for(int i = 1; i <= n; i++){ int x; cin >> x; while(x--){ int y; cin >> y; Adj[y].pb(i); } } for(int i = 1; i <= n; i++) bfss(i); cout << ans + n << "\n"; } signed main(){ ios_base::sync_with_stdio(0); process(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...