Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn=100001;int pre[maxn];vector<int> V[maxn];bool vis[maxn];int n;int main(){while(~scanf("%d",&n)){int val;memset(pre,0,sizeof(pre));memset(vis,false,sizeof(vis));for(int i=0;i<=n;i++)V[i].clear();for(int i=1;i<=n;i++){scanf("%d",&val);pre[i]=val;V[val].push_back(i);}int maxx=0;for(int i=1;i<=n;i++)if(pre[i]&&V[i].size()==0)maxx=max(maxx,int(V[pre[i]].size()));vector<int> ans;for(int i=1;i<=n;i++){if(pre[i]&&V[i].empty()&&V[pre[i]].size()==maxx&&!vis[pre[i]])