1 条题解

  • 0
    @ 2023-6-28 17:45:51

    建树,然后遍历 nn 个结点分别判断即可。

    #include <bits/stdc++.h>
    using namespace std;
    int n,p;
    vector<int> e[1001];
    int main(){
        cin>>n;
        for (int i=2;i<=n;i++){
            cin>>p;
            e[p].push_back(i);
        }
        for (int i=1;i<=n;i++){
            if (!e[i].size()){//叶子不参与判断
                continue;
            }
            int cnt=0;
            for (int j=0;j<e[i].size();j++){
                int v=e[i][j];
                if (!e[v].size()){//统计子节点中是叶子的个数
                    cnt++;
                }
            }
            if (cnt<3){
                cout<<"No";
                return 0;
            }
        }
        cout<<"Yes";
        return 0;
    }
    
    • 1

    信息

    ID
    1926
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    42
    已通过
    31
    上传者