【Hello 2018 B】Christmas Spruce
【链接】 我是链接,点我呀:)
【题意】
【题解】
写个dfs看看是不是每个节点都有3个叶子节点就可以了。【代码】
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3;
int n;
vector <int> g[N+10];
bool ok = true;
int dfs(int x){
if ((int) g[x].size()==0){
return 1;
}
int len = g[x].size();
int cnt = 0;
for (int i = 0;i < len;i++){
int y = g[x][i];
if (dfs(y)) cnt++;
}
if (cnt<3) ok = false;
return 0;
}
int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >> n;
for (int i= 2;i <= n;i++){
int p;
cin>>p;
g[p].push_back(i);
}
dfs(1);
if(ok){
cout <<"Yes"<<endl;
}else{
cout <<"No"<<endl;
}
return 0;
}