Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125330 | 付明澄 | 对称二叉树 | C++ | 通过 | 100 | 340 MS | 11972 KB | 700 | 2024-01-23 16:45:29 |
#include <bits/stdc++.h> using namespace std; bool flag; int n,ans=1,l[1000001],r[1000001],v[1000001]; int dfs(int x,int y,int s) { if(x==-1&&y==-1) return 0; if(x==-1||(y==-1&&x!=y)) { flag=1; return 0; } if(v[x]!=v[y]) { flag=1; return 0; } return dfs(l[x],r[y],2) + dfs(r[x],l[y],2)+s; } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",v+i); for(int i=1;i<=n;i++) scanf("%d%d",l+i,r+i); for(int i=1;i<=n;i++) { int s=dfs(l[i],r[i],3); if(s>ans&&flag==0) ans=s; flag=0; } printf("%d",ans); return 0; }