/*
بسم الله الرحمن الرحيم
Author:
(:Muhammad Aneeq:)
*/
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#warning check the output
using namespace std;
int const N=1e5+10;
vector<int>nei[N]={};
vector<int>lv[N]={};
map<int,vector<int>>co[N]={};
int it[N],ot[N];
int c[N]={};
int tm=0;
void dfs(int u,int h=0)
{
co[c[u]][h].push_back(u);
it[u]=tm++;
lv[h].push_back(it[u]);
for(auto i:nei[u])
dfs(i,h+1);
ot[u]=tm-1;
}
int fn(int u,int lev)
{
int z=lower_bound(begin(lv[lev]),end(lv[lev]),it[u])-begin(lv[lev]);
int y=upper_bound(begin(lv[lev]),end(lv[lev]),ot[u])-begin(lv[lev]);
return y-z;
}
pair<int,int> check(int k,int u)
{
int ans=0,mx=0;
for (auto [i,inds]:co[k])
{
int sz=fn(u,i);
sz=min(sz,int(inds.size()));
int f=0;
for (auto j:inds)
f+=(it[j]>=it[u]&&it[j]<=ot[u]);
ans+=sz;
mx+=sz-f;
}
return {ans,mx};
}
inline void solve()
{
int n,k;
cin>>n>>k;
for (int i=0;i<n;i++)
cin>>c[i];
int pra;
bool subt1=1;
for (int i=1;i<n;i++)
{
cin>>pra;
if (pra!=i-1)
subt1=0;
nei[pra].push_back(i);
}
if (subt1)
{
map<int,int>cnt;
int mx=1;
for (int i=n-1;i>=0;i--)
{
cnt[c[i]]++;
mx=max(mx,cnt[c[i]]);
}
cout<<mx<<' '<<0<<endl;return;
}
if (k==1)
{
cout<<n<<' '<<0<<endl;return;
}
dfs(0);
int ans=1,mx=0;
for (int i=0;i<n;i++)
{
pair<int,int>g=check(c[i],i);
if (ans<g.first)
{
ans=g.first;
mx=g.second;
}
if (g.first==ans)
mx=min(mx,g.second);
}
cout<<ans<<' '<<mx<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}
컴파일 시 표준 에러 (stderr) 메시지
Main.cpp:11:2: warning: #warning check the output [-Wcpp]
11 | #warning check the output
| ^~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |