제출 #899661

#제출 시각아이디문제언어결과실행 시간메모리
899661alexander707070Sprinkler (JOI22_sprinkler)C++14
100 / 100
647 ms94432 KiB
#include<bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")
#define MAXN 200007
using namespace std;

int n,q,type;
long long mod,w;
int a,b,s,d;
vector<int> v[MAXN];
int parent[MAXN];

long long mult[MAXN][42];

void dfs(int x,int p){
    parent[x]=p;

    for(int i=0;i<v[x].size();i++){
        if(v[x][i]==p)continue;
        dfs(v[x][i],x);
    }
}

void query(int x,int dist,long long p){
    if(dist<0)return;

    if(dist==0){
        mult[x][dist]*=p;
        mult[x][dist]%=mod;
        return;
    }

    mult[x][dist]*=p;
    mult[x][dist]%=mod;

    mult[x][dist-1]*=p;
    mult[x][dist-1]%=mod;

    if(x!=0)query(parent[x],dist-1,p);
    else query(parent[x],dist-2,p);
}

long long getval(int x,int dist){
    if(dist==41)return 1;
    if(x==0)return mult[x][dist];

    return (mult[x][dist]*getval(parent[x],dist+1))%mod;
}

int main(){

    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n>>mod;
    for(int i=1;i<=n-1;i++){
        cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }

    for(int i=0;i<=n;i++){
        for(int f=0;f<=40;f++){
            mult[i][f]=1;
        }
    }

    dfs(1,0);

    for(int i=1;i<=n;i++){
        cin>>mult[i][0];
    }

    cin>>q;
    for(int i=1;i<=q;i++){
        cin>>type;
        if(type==1){
            cin>>s>>d>>w;
            query(s,d,w);
        }else{
            cin>>s;
            cout<<getval(s,0)<<"\n";
        }
    }

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

sprinkler.cpp: In function 'void dfs(int, int)':
sprinkler.cpp:18:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int i=0;i<v[x].size();i++){
      |                 ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...