# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
342753 | nickmet2004 | Hard route (IZhO17_road) | C++11 | 933 ms | 145012 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 F first
#define S second
#define int long long
using namespace std;
typedef pair<int , int> ipair;
const int N = 5e5 + 5;
int n;
vector<int> adj[N];
vector<ipair> D[N];
ipair dpD[N] , dpU[N];
int mx , cnt;
void dfsD(int u = 1 , int p = 0){
for(int v : adj[u]){
if(v==p)continue;
dfsD(v , u);
if(dpD[v].F + 1 > dpD[u].F) dpD[u] = dpD[v] , dpD[u].F++;
else if(dpD[v].F + 1 == dpD[u].F) dpD[u].S += dpD[v].S;
}
if(adj[u].size() == 1 && u != 1) dpD[u].S = 1;
for(int v : adj[u]) if(v != p)D[u].emplace_back(dpD[v].F + 1, dpD[v].S);
}
void dfsU(int u = 1, int p = 0){
pair<int , int > d1 , d2;
d1.F = d1.S = d2.F= d2.S = 0;
d1 = dpD[u];
///d1.F--;
//cout << d1.F << " " << d1.S << " kaaa " << endl;
for(int v : adj[u]){
if(v==p || d1.F == dpD[v].F + 1)continue;
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... |