Submission #23016

#TimeUsernameProblemLanguageResultExecution timeMemory
23016sampritiBosses (BOI16_bosses)C++14
100 / 100
913 ms2204 KiB
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
#include <climits>

using namespace std;

vector<int> G[5001];
int D[5001];
int curr_ans;
queue<pair<int, int> > Q;

int main() {
  int N; scanf("%d", &N);

  for(int i = 1; i <= N; i++) {
    int K; scanf("%d", &K);

    while(K--) {
      int x; scanf("%d", &x);
      G[x].push_back(i);
    }
  }

  int ans = INT_MAX;
  for(int i = 1; i <= N; i++) {
    memset(D, 0, sizeof D);

    Q.push({i, 0});
    while(!Q.empty()) {
      int u = Q.front().first, p = Q.front().second; Q.pop();
      if(D[u]) continue;
      D[u] = D[p] + 1;

      for(int v: G[u]) {
        if(D[v]) continue;
        Q.push({v, u});
      }
    }

    bool valid = true;
    for(int j = 1; j <= N; j++) {
      if(!D[j]) {
        valid = false;
        break;
      }
    }
    if(!valid) continue;

    int curr_ans = 0;
    for(int j = 1; j <= N; j++) curr_ans += D[j];
    ans = min(ans, curr_ans);
  }

  printf("%d\n", ans);
}

Compilation message (stderr)

bosses.cpp: In function 'int main()':
bosses.cpp:16:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int N; scanf("%d", &N);
                         ^
bosses.cpp:19:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     int K; scanf("%d", &K);
                           ^
bosses.cpp:22:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       int x; scanf("%d", &x);
                             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...