제출 #1275698

#제출 시각아이디문제언어결과실행 시간메모리
1275698PooyaDaftarianBosses (BOI16_bosses)C++20
100 / 100
381 ms784 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef long double ld; #define all(x) x.begin(), x.end() #define fast_io ios_base::sync_with_stdio(0); cin.tie(0) #define endl '\n' #define pb push_back #define out(x) {cout << x << '\n'; return;} #define ff first #define ss second #define sz(x) (int)(x).size() #define int ll const int maxn = 5007; int n; vector<int> adj[maxn]; int dist[maxn]; bool vis[maxn]; void bfs(int s){ for (int i = 1 ; i <= n ; i++) vis[i] = 0, dist[i] = 0; queue<int> q; vis[s] = 1, dist[s] = 1, q.push(s); while (!q.empty()){ int v = q.front(); q.pop(); for (auto u : adj[v]) if (!vis[u]) vis[u] = 1, dist[u] = dist[v] + 1, q.push(u); } } int32_t main(){ fast_io; cin >> n; for (int i = 1 ; i <= n ; i++){ int k; cin >> k; for (int j = 1 ; j <= k ; j++){ int v; cin >> v; adj[v].pb(i); } } int ans = 1e18; for (int s = 1 ; s <= n ; s++){ bfs(s); bool f = 1; for (int i = 1 ; i <= n ; i++) if (!vis[i]) f = 0; if (!f) continue; int sm = 0; for (int i = 1 ; i <= n ; i++) sm += dist[i]; ans = min(ans, sm); } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...