1 条题解

  • 0
    @ 2022-8-12 16:45:25

    #include <iostream>

    using namespace std; int l[1000010], r[1000010], n, a[1000010],ans = 1; bool flag; 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(a[x] != a[y]){ flag = 1; return 0; } return dfs(l[x], r[y], 2) + dfs(r[x], l[y], 2) + s; } int main(){ cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++) cin >> 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; } cout << ans << endl; return 0; }

    • 1

    信息

    ID
    3946
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    8
    已通过
    6
    上传者