Submission #107196

#TimeUsernameProblemLanguageResultExecution timeMemory
107196dolphingarlicBosses (BOI16_bosses)C++14
0 / 100
2 ms640 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#define FOR(i, x, y) for(int i = x; i < y; i++)
typedef long long ll;
using namespace std;

vector<int> graph[5001], tree[5001];
int mn = INT_MAX;

bool visited[5001];
void bfs(int node) {
    queue<int> q;
    fill(visited, visited + 5001, false);
    fill(tree, tree + 5001, vector<int>());
    q.push(node);
    visited[node] = true;
    while (!q.empty()) {
        int curr = q.front();
        q.pop();
        for (auto& i : graph[curr]) {
            if (!visited[i]) {
                visited[i] = true;
                q.push(i);
                tree[curr].push_back(i);
            }
        }
    }
}

int dp[5001], sum;
void dfs(int node) {
    dp[node] = 1;
    for (auto& i : tree[node]) {
        dfs(i);
        dp[node] += dp[i];
    }
    sum += dp[node];
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin >> n;
    FOR(i, 1, n + 1) {
        int x;
        cin >> x;
        FOR(j, 0, x) {
            int k;
            cin >> k;
            graph[k].push_back(i);
        }
    }
    FOR(i, 1, n + 1) {
        bfs(i);
        sum = 0;
        dfs(i);
        mn = min(sum, mn);
    }
    cout << mn << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...