# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
303565 | nickmet2004 | Designated Cities (JOI19_designated_cities) | C++11 | 527 ms | 35044 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#define ll long long
#define f first
#define s second
using namespace std;
typedef pair<int, int> ipair;
const int N = 2e5 + 5;
int n , q ,A[N] , B[N] , C[N] , D[N];
ll dpD[N] , dpU[N] , cnt[N] ,was[N] , ans[N];
vector<ipair> adj[N];
void dfsD(int u = 1, int p = 0){
for(ipair X : adj[u]){
int v = X.f , id = X.s;
if(v==p) continue;
dfsD(v , u);
int W = 0; if(A[id] == u) W = C[id]; else W = D[id];
dpD[u] += dpD[v] + W;
}
}
void dfsU(int u = 1 , int p = 0){
for(ipair X : adj[u]){
int v = X.f , id = X.s;
if(v==p) continue;
dpU[v] += dpU[u];
int W = 0; if(A[id] == v) W = C[id]; else W = D[id];
int E = 0; if(C[id] == W) E = D[id]; else E = C[id];
dpU[v] += dpD[u] - (dpD[v] + E) + W;
dfsU(v , u);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |