Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
125263 | 梁颢城 | 对称二叉树 | C++ | 通过 | 100 | 681 MS | 11980 KB | 737 | 2024-01-23 16:40:05 |
#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; }