Submission #408823

# Submission time Handle Problem Language Result Execution time Memory
408823 2021-05-19T17:17:19 Z danielcm585 Bosses (BOI16_bosses) C++14
67 / 100
1500 ms 888 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++) adj[i].clear();
    memset(use,0,sizeof(use));
    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 556 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 2 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 556 KB Output is correct
9 Correct 1 ms 460 KB Output is correct
10 Correct 1 ms 460 KB Output is correct
11 Correct 2 ms 460 KB Output is correct
12 Correct 6 ms 700 KB Output is correct
13 Correct 5 ms 716 KB Output is correct
14 Correct 223 ms 864 KB Output is correct
15 Correct 30 ms 716 KB Output is correct
16 Correct 788 ms 888 KB Output is correct
17 Execution timed out 1532 ms 844 KB Time limit exceeded
18 Halted 0 ms 0 KB -