Submission #279695

#TimeUsernameProblemLanguageResultExecution timeMemory
279695errayBosses (BOI16_bosses)C++17
100 / 100
1147 ms1224 KiB
// author: erray
#include<bits/stdc++.h>
 
using namespace std;
 
int main () {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<vector<int>> g(n);
  for (int i = 0; i < n; ++i) {
    int k;
    cin >> k;
    for (int j = 0; j < k; ++j) {
      int x;
      cin >> x;
      --x;
      g[x].push_back(i);
    }
  }
  long long ans = LLONG_MAX;
  for (int i = 0; i < n; ++i) {
    vector<bool> vis(n);
    vector<long long> val(n, 1);
    queue<pair<int, int>> que;
    que.emplace(i, -1);
    vector<pair<int, int>> ord;

    vis[i] = true;
    while (!que.empty()) {
      int v = que.front().first;
      ord.push_back(que.front());
      que.pop();
      for (auto u : g[v]) {
        if (vis[u]) continue;
        vis[u] = true;
        que.emplace(u, v);        
      }
    }
    if ((int) ord.size() != n) continue;
    reverse(ord.begin(), ord.end());
    ord.pop_back();
    bool ok = true;
    for (auto v : ord) {
      val[v.second] += val[v.first];
    }
    ans = min(ans, accumulate(val.begin(), val.end(), 0LL));
  }
  cout << ans << '\n';
}

Compilation message (stderr)

bosses.cpp: In function 'int main()':
bosses.cpp:44:10: warning: unused variable 'ok' [-Wunused-variable]
   44 |     bool ok = true;
      |          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...