제출 #79517

#제출 시각아이디문제언어결과실행 시간메모리
79517IOrtroiiiBosses (BOI16_bosses)C++14
67 / 100
1568 ms1232 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 5005;

int n;
vector<int> g[N];
vector<int> new_g[N];
bool visit[N];
long long F[N];

void dfs(int u) {
   F[u] = 1;
   for (int v : new_g[u]) {
      dfs(v);
      F[u] += F[v];
   }
}

long long bfs(int root) {
   for (int i = 1; i <= n; ++i) {
      visit[i] = 0;
      new_g[i].clear();
   }
   queue<int> q;
   visit[root] = 1;
   q.push(root);
   while (!q.empty()) {
      int u = q.front(); q.pop();
      for (int v : g[u]) {
         if (!visit[v]) {
            new_g[u].push_back(v);
            q.push(v);
            visit[v] = 1;
         }
      }
   }
   if (accumulate(visit + 1, visit + 1 + n, 0) != n) return 1e18;
   dfs(root);
   return accumulate(F + 1, F + n + 1, 0LL);
}

int main() {
   scanf("%d", &n);
   for (int i = 1; i <= n; ++i) {
      int x; scanf("%d", &x);
      while (x--) {
         int u; scanf("%d", &u);
         g[u].push_back(i);
      }
   }
   long long res = 1e18;
   for (int i = 1; i <= n; ++i) res = min(res, bfs(i));
   cout << res << '\n';
}

컴파일 시 표준 에러 (stderr) 메시지

bosses.cpp: In function 'int main()':
bosses.cpp:44:9: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d", &n);
    ~~~~~^~~~~~~~~~
bosses.cpp:46:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       int x; scanf("%d", &x);
              ~~~~~^~~~~~~~~~
bosses.cpp:48:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
          int u; scanf("%d", &u);
                 ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...