Submission #408825

# Submission time Handle Problem Language Result Execution time Memory
408825 2021-05-19T17:20:18 Z danielcm585 Bosses (BOI16_bosses) C++14
67 / 100
1500 ms 908 KB
#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second

typedef long long ll;
typedef pair<int,int> ii;

const int N = 5e3;
const int INF = 1e9;
int n;
bool use[N+2];
int val[N+2];
vector<int> lst[N+2], adj[N+2];

int dfs(int cur, int par) {
    int ret = 0;
    val[cur] = 0;
    for (int nx : adj[cur]) {
        if (nx == par) continue;
        ret += dfs(nx,cur);
        val[cur] += val[nx];
    }
    val[cur]++;
    ret += val[cur];
    return ret;
}

int bfs(int st) {
    for (int i = 1; i <= n; i++) {
        use[i] = 0;
        adj[i].clear();
    }
    queue<int> q;
    q.push(st); use[st] = 1;
    while (!q.empty()) {
        int cur = q.front(); q.pop();
        for (int nx : lst[cur]) {
            if (use[nx]) continue;
            use[nx] = 1;
            adj[cur].push_back(nx);
            q.push(nx);
        }
    }
    for (int i = 1; i <= n; i++) {
        if (!use[i]) return INF;
    }
    return dfs(st,0);
}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int k; cin >> k;
        for (int j = 1; j <= k; j++) {
            int x; cin >> x;
            lst[x].push_back(i);
        }
    }
    int ans = INF;
    for (int i = 1; i <= n; i++) {
        ans = min(ans,bfs(i));
    }
    cout << ans << '\n';
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 460 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 460 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 460 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 1 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 1 ms 460 KB Output is correct
3 Correct 1 ms 460 KB Output is correct
4 Correct 1 ms 460 KB Output is correct
5 Correct 1 ms 460 KB Output is correct
6 Correct 1 ms 460 KB Output is correct
7 Correct 1 ms 460 KB Output is correct
8 Correct 1 ms 460 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 1 ms 460 KB Output is correct
12 Correct 6 ms 588 KB Output is correct
13 Correct 7 ms 588 KB Output is correct
14 Correct 239 ms 908 KB Output is correct
15 Correct 29 ms 716 KB Output is correct
16 Correct 765 ms 828 KB Output is correct
17 Execution timed out 1544 ms 844 KB Time limit exceeded
18 Halted 0 ms 0 KB -