hdu - 4601 - Letter Tree(二)
u], cmp) - dep[h].begin() + depBefore[h-1];
return RMQ(L, R);
}
int main()
{
getPow26();
scanf("%d", &T);
while(T--){
init(); //为输入,bfs和获取trip树结点的字典序初始化
read(); //读入数据
bfs(); //求得树各结点的深度,建trip
getTripRank(0); //获取trip树结点的字典序
init2(); //为dfs初始化
dfs(1); //求得in[], maxChild[], tail[], Hash[], Rank[], dep[]
get(); //求得a[], depBefore[]
initRMQ();
while(M--){
int u, m;
scanf("%d%d", &u, &m);
int des = solve(u, m); //求得目标结点
if(des != -1) printf("%d\n", (int)(Hash[des] - (long long)Hash[u] * pow26[m] % mod + mod) % mod);
else puts("IMPOSSIBLE");
}
}
return 0;
}