为什么啊
#include<iostream>
using namespace std;
int main(){
int n;cin>>n;
int a[n];
long long x[n];
long long temp=0;
for(int i=0;i<n;i++)temp+=1<<i;
for(int i=0;i<n;i++){cin>>a[i];x[i]=temp;}
for(int i=0;i<n;i++){
if(a[i]==-1){
for(int j=0;j<n;j++){
if(i==j)continue;
if(x[j]>>i&1)x[j]-=1<<i;
if(x[i]>>j&1)x[i]-=1<<j;
}
}else{
if(x[i]>>(a[i]-1)&1)x[i]-=1<<(a[i]-1);
if(x[a[i]-1]>>i&1)x[a[i]-1]-=1<<i;
}
}
int ans=0,maxans=0;
for(int i=0;i<n;i++){
if(a[i]==-1)continue;
ans=0;
for(int j=0;j<n;j++){
if(x[j]>>i&1)x[j]=x[j]&x[i];
if(x[i]>>j&1)ans++;
}
if(ans>maxans)maxans=ans;
}
cout<<maxans<<endl;
return 0;
}