Submission #118205

# Submission time Handle Problem Language Result Execution time Memory
118205 2019-06-18T10:52:32 Z songc Designated Cities (JOI19_designated_cities) C++14
9 / 100
442 ms 25160 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL, int> pii;

int N, Q;
vector<pii> G[202020];
int deg[202020], cnt;
bool chk[202020];
LL ans[202020], sum;

priority_queue<pii> PQ;

void d(int u, int p){
    for (pii v : G[u]){
        if (v.second != p){
            ans[1] += v.first;
            d(v.second, u);
        }
    }
}

void f(int u, int p, LL c){
    for (pii v : G[u]) {
        if (v.second != p) f(v.second, u, c-v.first);
        else c += v.first;
    }
    ans[1] = max(ans[1], c);
}

int main(){
    int u, v, x, y;
    scanf("%d", &N);
    for (int i=1; i<N; i++){
        scanf("%d %d %d %d", &u, &v, &x, &y);
        G[u].push_back(pii(y, v));
        G[v].push_back(pii(x, u));
        deg[u]++, deg[v]++;
        sum += x+y;
    }
    for (int i=1; i<=N; i++){
        if (deg[i] == 1){
            PQ.push(pii(-G[i][0].first, i));
            cnt++;
        }
    }
    while (cnt>2){
        pii T = PQ.top();
        PQ.pop();
        chk[T.second] = true;
        for (pii it : G[T.second]){
            if (!chk[it.second]){
                u = it.second;
                break;
            }
        }
        deg[u]--;
        if (deg[u] == 1){
            for (pii it : G[u]){
                if (!chk[it.second]){
                    PQ.push(pii(T.first-it.first, u));
                    break;
                }
            }
            continue;
        }
        cnt--;
        ans[cnt] = ans[cnt+1] - T.first;
    }
    d(1, 0);
    f(1, 0, ans[1]);
    ans[1] = sum - ans[1];
    scanf("%d", &Q);
    while (Q--){
        scanf("%d", &u);
        printf("%lld\n", ans[u]);
    }
    return 0;
}

Compilation message

designated_cities.cpp: In function 'int main()':
designated_cities.cpp:33:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &N);
     ~~~~~^~~~~~~~~~
designated_cities.cpp:35:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d %d", &u, &v, &x, &y);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
designated_cities.cpp:73:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &Q);
     ~~~~~^~~~~~~~~~
designated_cities.cpp:75:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &u);
         ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5120 KB Output is correct
2 Incorrect 5 ms 5120 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5120 KB Output is correct
2 Incorrect 418 ms 18404 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 5120 KB Output is correct
2 Correct 422 ms 18272 KB Output is correct
3 Correct 357 ms 25160 KB Output is correct
4 Correct 386 ms 18416 KB Output is correct
5 Correct 422 ms 18664 KB Output is correct
6 Correct 442 ms 19892 KB Output is correct
7 Correct 311 ms 21476 KB Output is correct
8 Correct 385 ms 23152 KB Output is correct
9 Correct 284 ms 21476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5120 KB Output is correct
2 Incorrect 5 ms 5120 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5120 KB Output is correct
2 Incorrect 418 ms 18404 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 6 ms 5120 KB Output is correct
2 Incorrect 5 ms 5120 KB Output isn't correct
3 Halted 0 ms 0 KB -