제출 #973618

#제출 시각아이디문제언어결과실행 시간메모리
973618Amirreza_FakhriBosses (BOI16_bosses)C++17
100 / 100
445 ms856 KiB
// In the name of the God #include <bits/stdc++.h> #define ll long long // #define int long long #define pb push_back #define F first #define S second #define mp make_pair #define pii pair <int, int> #define smin(x, y) (x) = min((x), (y)) #define smax(x, y) (x) = max((x), (y)) #define all(x) (x).begin(), (x).end() using namespace std; // #pragma GCC optimize("O3,unroll-loops") // #pragma GCC target("avx2") const int inf = 1e9+7; const int mod = 998244353; const int maxn = 5e3+5; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int n, mark[maxn]; vector <int> adj[maxn]; queue <int> q; int bfs(int r) { int sum = 0; memset(mark, 0, sizeof mark); while (q.size()) q.pop(); mark[r] = 1; q.push(r); while (q.size()) { int v = q.front(); q.pop(); sum += mark[v]; for (int u : adj[v]) { if (!mark[u]) { mark[u] = mark[v] + 1; q.push(u); } } } if (*min_element(mark, mark+n) == 0) return inf; return sum; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; i++) { int k; cin >> k; while (k--) { int j; cin >> j; adj[--j].pb(i); } } int ans = inf; for (int i = 0; i < n; i++) smin(ans, bfs(i)); cout << ans << '\n'; return 0; } /* srand(time(0)); cout << (rand()%1900) + 1 << ' ' << (rand()%2)+5 << '\n'; */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...