This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include <iostream>
#define ll long long
#define ull unsigned ll
using namespace std;
unsigned long long prime[25001];
long par[200001];
long country[200001];
vector<long> child[200001];
unsigned long long dp[25001]={};
ull dfs(long u){
ull result = 1;
for (auto v:child[u]){
result*=dfs(v);
}
if (dp[country[u]] ==0){
dp[country[u]] = result;
}
else {
dp[country[u]] *=result;
}
result*=prime[country[u]];
return result;
}
int main(){
long j = 2;
for (long i = 1;i<=25000;i++){
bool o = false;
do
{
o = false;
for (long k = 2;k*k<=j;k++){
if (j%k == 0){
j++;
o = true;
break;
}
}
} while (o);
prime[i] = (unsigned long long) j;
j++;
}
long N,R,Q;
cin>>N>>R>>Q;
cin>>country[1];
for(long i = 2;i<=N;i++){
cin>>par[i];
child[par[i]].push_back(i);
cin>>country[i];
}
dfs(1);
for (long i = 1;i<=Q;i++){
ull j,k,answer = 0;
cin>>j>>k;
ull temp = dp[j];
ull divider = prime[k];
while (temp%divider == 0){
answer++;
temp/=divider;
}
cout<<answer<<flush;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |