Submission #89301

# Submission time Handle Problem Language Result Execution time Memory
89301 2018-12-11T16:32:11 Z vvash17 Triumphal arch (POI13_luk) C++14
100 / 100
1096 ms 43664 KB

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

const int MAXN = 1000001;

vector<int> adj[MAXN];
bool visited[MAXN];

int Check(int u, int k) {
    int numChildren = 0, sumTree = 0;

    visited[u] = true;

    for (int i = 0; i < (int)adj[u].size(); i++)
        if (!visited[adj[u][i]]) {
            numChildren++;
            sumTree += Check(adj[u][i], k);
        }

    return max(0, numChildren+sumTree-k);
}

int main() {
    int ret, N, fromSearch = 0, toSearch;

    ret = scanf("%d", &N);
    if (ret < 0)
        return 0;
    for (int i = 0; i < N-1; i++) {
        int u, v;

        ret = scanf("%d%d", &u, &v);
        u--;
        v--;

        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    toSearch = N;

    while (fromSearch < toSearch) {
        int centSearch = (fromSearch+toSearch)/2;

        fill(visited, visited+N, false);

        if (Check(0, centSearch) == 0)
            toSearch = centSearch;
        else
            fromSearch = centSearch+1;
    }

    printf("%d\n", fromSearch);

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 22 ms 23800 KB Output is correct
2 Correct 22 ms 23880 KB Output is correct
3 Correct 22 ms 23880 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 23888 KB Output is correct
2 Correct 25 ms 23888 KB Output is correct
3 Correct 26 ms 23960 KB Output is correct
4 Correct 25 ms 23976 KB Output is correct
5 Correct 25 ms 23976 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 25 ms 23980 KB Output is correct
2 Correct 25 ms 23980 KB Output is correct
3 Correct 26 ms 23984 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 23988 KB Output is correct
2 Correct 22 ms 23988 KB Output is correct
3 Correct 21 ms 23996 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 31 ms 24380 KB Output is correct
2 Correct 31 ms 24568 KB Output is correct
3 Correct 27 ms 24604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 25408 KB Output is correct
2 Correct 59 ms 26340 KB Output is correct
3 Correct 44 ms 26340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 155 ms 28372 KB Output is correct
2 Correct 163 ms 30404 KB Output is correct
3 Correct 121 ms 30404 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 782 ms 33416 KB Output is correct
2 Correct 701 ms 38732 KB Output is correct
3 Correct 221 ms 38732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1096 ms 38772 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1060 ms 38772 KB Output is correct
2 Correct 1057 ms 43664 KB Output is correct
3 Correct 336 ms 43664 KB Output is correct