# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
118205 | 2019-06-18T10:52:32 Z | songc | Designated Cities (JOI19_designated_cities) | C++14 | 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
# | 결과 | 실행 시간 | 메모리 | 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 | - |
# | 결과 | 실행 시간 | 메모리 | 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 | - |
# | 결과 | 실행 시간 | 메모리 | 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 |
# | 결과 | 실행 시간 | 메모리 | 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 | - |
# | 결과 | 실행 시간 | 메모리 | 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 | - |
# | 결과 | 실행 시간 | 메모리 | 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 | - |