# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1156964 | Pacybwoah | Unique Cities (JOI19_ho_t5) | C++20 | 178 ms | 43684 KiB |
#include<iostream>
#include<algorithm>
#include<utility>
#include<vector>
#include<map>
#include<cmath>
#include<set>
using namespace std;
vector<vector<int>> graph;
vector<int> maxd, maxu, ans;
// dep, unique
void dfs1(int node, int parent){
multiset<pair<int, int>> s;
for(auto &x: graph[node]){
if(x == parent) continue;
dfs1(x, node);
maxd[node] = max(maxd[node], maxd[x] + 1);
s.emplace(maxd[x] + 1, maxu[x] + 1);
}
if(!s.empty()){
auto iter = prev(s.end());
if((int)s.size() == 1) maxu[node] = (*iter).second;
else{
auto iter2 = prev(iter);
if((*iter2).first < (*iter).second) maxu[node] = (*iter).second;
}
}
}
void dfs2(int node, int parent, int upd, int upu){
multiset<pair<int, int>> s;
# | 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... |