답안 #606948

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
606948 2022-07-26T10:26:48 Z jjiangly Bosses (BOI16_bosses) C++14
100 / 100
819 ms 648 KB
#include <bits/stdc++.h>
using namespace std;

#define all(x) x.begin(), x.end()
#define siz(x) int(x.size())
#define ll long long
#define ar array
#define vt vector
#define inf INT_MAX
#define lnf LLONG_MAX

const int nxm = int(5e3) + 7;
int n, k, u;
vt<vt<int>> e(nxm);

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);

  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> k;
    for (int j = 0; j < k; ++j) {
      cin >> u;
      --u;
      e[u].push_back(i);
    }
  }
  int ans = inf;
  for (int i = 0; i < n; ++i) {
    //vt<vt<int>> e2(nxm);
    int cnt = 0;
    int tot = 0;
    function<void()> bfs = [&]() {
      vt<bool> vis(n, false);
      queue<ar<int, 2>> que;
      que.push({i, 1});
      while (que.size()) {
        u = que.front()[0];
        int p = que.front()[1];
        que.pop();
        if (vis[u]) {
          continue;
        }
        tot += p;
        ++cnt;
        //if (p != -1) {
          //e2[p].push_back(u);
        //}
        vis[u] = true;
        for (int v : e[u]) {
          if (!vis[v]) {
            que.push({v, p + 1});
          }
        }
      }
    };
    bfs();
    if (cnt != n) {
      continue;
    }
    //vt<int> d(n, 0);
    //function<void(int)> dfs = [&](int root) {
      //int sum = 0;
      //for (int v : e2[root]) {
        //dfs(v);
        //sum += d[v];
      //}
      //d[root] = sum + 1;
      //tot += d[root];
    //};
    //dfs(i);
    ans = min(ans, tot);
  }
  cout << ans << "\n";

  return 0;
}


# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 0 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 340 KB Output is correct
12 Correct 17 ms 548 KB Output is correct
13 Correct 13 ms 468 KB Output is correct
14 Correct 153 ms 496 KB Output is correct
15 Correct 3 ms 468 KB Output is correct
16 Correct 649 ms 588 KB Output is correct
17 Correct 819 ms 648 KB Output is correct
18 Correct 742 ms 648 KB Output is correct