Pagini recente » Cod sursa (job #2947226) | Cod sursa (job #835385) | Cod sursa (job #1560415) | Cod sursa (job #1137035) | Cod sursa (job #766133)
Cod sursa(job #766133)
#include<fstream>
#define LE 250500
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int father[LE],prev[LE],j,n,q,level,M[LE][20],nod,viz[LE],i;
void setM(int pos)
{
prev[father[pos]]=pos;
if (prev[pos]!=0)
{
for(j=0;j<=20&&M[prev[pos]][j]!=0;++j)
M[pos][j]=father[M[prev[pos]][j]];
return;
}
int lev_need=1,lev=0,k=pos,pe=0;
while (father[k]!=0)
{
++lev;
k=father[k];
if (lev==lev_need)
M[pos][pe++]=k,lev_need*=2;
}
}
int main()
{
f>>n>>q;
for(i=1;i<=n;++i)
f>>father[i];
for(i=n;i>=1;--i)
if (viz[i]!=-1)
setM(i);
for(i=1;i<=q;++i)
{
f>>nod>>level;
}
return 0;
}