Submission #884329

# Submission time Handle Problem Language Result Execution time Memory
884329 2023-12-07T07:05:16 Z vjudge1 Bosses (BOI16_bosses) C++17
100 / 100
899 ms 1044 KB
#include <bits/stdc++.h>
#define file_io freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
#define fast_io ios::sync_with_stdio(false);cin.tie(0);
#define what(x) cerr << #x << " is " << x << '\n';
#define kill(x) {cout << x << '\n'; return 0;}
#define all(x) (x).begin(), (x).end()
#define pii pair<int, int>
#define pb push_back
#define ll long long
#define F first
#define S second
const ll inf = 1e18, mod = 1e9 + 7, delta = 1e9 + 9, SQ = 450, P = 6065621;
 
using namespace std;

#define int ll

const ll N = 5e3 + 10, LG = 20;
vector<int> adj[N];
vector<int> G[N];
bitset<N> mark;
int dp[N];

void dfs (int v) {
  dp[v] = 1;
  for (auto u: G[v]) {
    dfs(u);
    dp[v] += dp[u];
  }
}

int32_t main() {
  fast_io;
  int n, ans = inf;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int k, x;
    cin >> k;
    while (k--) {
      cin >> x;
      adj[x].pb(i);
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++)
      G[j].clear();
    queue<int> q;
    mark.reset();
    q.push(i);
    mark[i] = true;
    while (q.size()) {
      int v = q.front();
      q.pop();
      for (auto u: adj[v]) {
        if (!mark[u]) {
          q.push(u);
          mark[u] = true;
          G[v].pb(u);
        }
      }
    }
    memset(dp, 0, sizeof dp);
    dfs(i);
    int sum = 0;
    for (int j = 1; j <= n; j++) {
      sum += dp[j];
      if (dp[j] == 0) goto Hell;
    }
    ans = min(ans, sum);
    Hell:;
  }
  cout << ans << '\n';
  return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 600 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
7 Correct 0 ms 604 KB Output is correct
8 Correct 0 ms 604 KB Output is correct
9 Correct 1 ms 600 KB Output is correct
10 Correct 1 ms 604 KB Output is correct
11 Correct 1 ms 604 KB Output is correct
12 Correct 4 ms 932 KB Output is correct
13 Correct 3 ms 860 KB Output is correct
14 Correct 212 ms 1004 KB Output is correct
15 Correct 21 ms 860 KB Output is correct
16 Correct 796 ms 860 KB Output is correct
17 Correct 879 ms 1044 KB Output is correct
18 Correct 899 ms 1044 KB Output is correct