| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38661 | Chasing2575 | 【J】T3 | C++ | 解答错误 | 0 | 9 MS | 23688 KB | 783 | 2025-10-18 15:29:35 |
#include <bits/stdc++.h> using namespace std; int n,tri[1000005]; vector<int> v[1000005]; int search(int now,int pre){ int sum=1; for(int i=0;i<v[now].size();i++){ if(v[now][i]==pre) continue; sum+=search(v[now][i],now); }return sum; } void find(){ } int main(){ cin>>n; int z; for(int i=2;i<=n;i++){ cin>>z; v[i].push_back(z); v[z].push_back(i); } int cnt=0; for(int i=1;i<=n;i++){ if(v[i].size()==3) tri[++cnt]=i; if(v[i].size()>3){ cout<<0; return 0; } } if(cnt==0){ cout<<n*n-1; return 0; } if(cnt==1){ int x1,x2,x3; x1=search(v[tri[1]][0],tri[1]); x2=search(v[tri[1]][1],tri[1]); x3=search(v[tri[1]][2],tri[1]); cout<<x1*x2+x1*x3+x2*x3; return 0; }else{ } return 0; } //