update
This commit is contained in:
parent
fa7f526cc7
commit
4efd741fa9
1
src/P1030/P1030.cpp
Normal file
1
src/P1030/P1030.cpp
Normal file
@ -0,0 +1 @@
|
||||
int main(){}
|
64
src/P5018/P5018.cpp
Normal file
64
src/P5018/P5018.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
#include <cctype>
|
||||
#include <cstdio>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
using ll = long long;
|
||||
|
||||
struct CinLL{
|
||||
char c;
|
||||
ll n,w;
|
||||
CinLL&operator>>(ll &ref)noexcept{
|
||||
c=0,n=0,w=1;
|
||||
while(!isdigit(c)){
|
||||
if(c=='-')w=-1;
|
||||
c=getchar();
|
||||
}
|
||||
while(isdigit(c)){
|
||||
n=n*10+c-'0';
|
||||
c=getchar();
|
||||
}
|
||||
ref = n*w;
|
||||
return *this;
|
||||
}
|
||||
}cin_ll;
|
||||
|
||||
auto &is = cin_ll;
|
||||
auto &os = std::cout;
|
||||
|
||||
const ll max_n = 1e6+5;
|
||||
ll n, ans{1};
|
||||
ll weight[max_n],l_son[max_n],r_son[max_n];
|
||||
|
||||
ll dfs(const ll a,const ll b,const ll sum)noexcept{
|
||||
if(a==-1&&b==-1){
|
||||
return 0;
|
||||
}else if((a==-1||b==-1)&&a!=b){
|
||||
return -1;
|
||||
}
|
||||
if(weight[a]!=weight[b]){
|
||||
return -1;
|
||||
}
|
||||
const ll ret_a {dfs(l_son[a],r_son[b],2)}, ret_b{dfs(r_son[a], l_son[b],2)};
|
||||
if(ret_a==-1||ret_b==-1){
|
||||
return -1;
|
||||
}else{
|
||||
return ret_a+ret_b+sum;
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
is>>n;
|
||||
for(ll i{1};i<=n;i++){
|
||||
is>>weight[i];
|
||||
}
|
||||
for(ll i{1};i<=n;i++){
|
||||
is>>l_son[i]>>r_son[i];
|
||||
}
|
||||
for(ll i{1};i<=n;i++){
|
||||
if(const auto tmp = dfs(l_son[i],r_son[i],3);tmp!=-1){
|
||||
ans = std::max(ans,tmp);
|
||||
}
|
||||
}
|
||||
os<<ans<<'\n';
|
||||
}
|
Loading…
Reference in New Issue
Block a user