제출 #262384

#제출 시각아이디문제언어결과실행 시간메모리
262384HeheheBosses (BOI16_bosses)C++14
100 / 100
784 ms1144 KiB
#include<bits/stdc++.h> //:3 using namespace std; typedef long long ll; #define all(a) (a).begin(), (a).end() #define ff first #define ss second #define pb push_back #define mp make_pair #define pi pair<long double, long double> #define sz(x) (int)((x).size()) //#define int long long const int dx[] = {0, 1, 0, -1}; const int dy[] = {1, 0, -1, 0}; const ll inf = 2e9; const ll mod = 1e9 + 7; const int N = 2e4 + 11; const ll INF64 = 2e9; const double eps = 1e-14; const double PI = acos(-1); //ifstream in(".in"); //ofstream out(".out"); int n, viz[N], d[N]; vector<int>v[N]; int bfs(int x){ for(int i = 1; i <= n; i++)viz[i] = 0, d[i] = 0; d[x] = 1; viz[x] = 1; queue<int>q; q.push(x); while(!q.empty()){ int nod = q.front(); q.pop(); for(auto it : v[nod]){ if(viz[it])continue; viz[it] = 1; d[it] = d[nod] + 1; q.push(it); } } int ans = 0; for(int i = 1; i <= n; i++){ if(!viz[i])return -1; ans += d[i]; } return ans; } void solve(){ cin >> n; for(int i = 1, k; i <= n; i++){ cin >> k; for(int j = 1, x; j <= k; j++){ cin >> x; v[x].push_back(i); } } int ans = INF64; for(int i = 1; i <= n; i++){ int x = bfs(i); if(x != -1)ans = min(ans, x); } if(ans == INF64){ cout << "-1" << '\n'; return; } cout << ans << '\n'; } int32_t main(){ ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); //cout << setprecision(6) << fixed; int T = 1; //cin >> T; while(T--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...