Submission #876795

# Submission time Handle Problem Language Result Execution time Memory
876795 2023-11-22T10:48:16 Z simona1230 Sprinkler (JOI22_sprinkler) C++17
0 / 100
3781 ms 104512 KB
#include <bits/stdc++.h>
using namespace std;
long long n,l;
vector<long long> v[200001];
long long h[200001];
void read()
{
    cin>>n>>l;
    for(long long i=1;i<n;i++)
    {
        long long a,b;
        cin>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    for(long long i=1;i<=n;i++)
        cin>>h[i];
}
long long curr[200001][45];
long long q,t,x,d,w;
long long used[200001];
long long p[200001];
void dfs(long long i)
{
    used[i]=1;
    for(long long j=0;j<v[i].size();j++)
    {
        long long nb=v[i][j];
        if(!used[nb])
        {
            p[nb]=i;
            dfs(nb);
        }
    }
}
void upd(long long i,long long lvl)
{
    curr[i][lvl]*=w;
    //curr[i][lvl]%=l;
    //cout<<i<<","<<lvl<<" "<<curr[i][lvl]<<endl;
    if(i!=1&&lvl!=0)upd(p[i],lvl-1);
}
long long get(long long i,long long lvl,long long h)
{
    //cout<<i<<" - "<<lvl<<endl;
    long long here=1;
    for(long long j=lvl;j<=40;j++)
    {
        //cout<<i<<"*"<<j<<" "<<curr[i][j]<<endl;
        if(h!=0&&j!=40&&curr[h][j+1]!=0)here*=max((long long)1,curr[i][j]/curr[h][j+1]);
        else here*=curr[i][j];
        //here%=l;
    }
    if(i!=1&&lvl!=40)
        here*=get(p[i],lvl+1,i);
    //here%=l;
    return here;
}
void solve()
{
    for(long long i=1;i<=n;i++)
        for(long long j=0;j<=40;j++)
            curr[i][j]=1;
    dfs(1);
    cin>>q;
    for(long long i=1;i<=q;i++)
    {
        cin>>t>>x;
        if(t==1)
        {
            cin>>d>>w;
            upd(x,d);
        }
        else
        {
            cout<<(get(x,0,0)*h[x])%l<<endl;
        }
    }
}
int main()
{
    read();
    solve();
    return 0;
}

Compilation message

sprinkler.cpp: In function 'void dfs(long long int)':
sprinkler.cpp:26:24: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(long long j=0;j<v[i].size();j++)
      |                       ~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Correct 2 ms 12380 KB Output is correct
3 Correct 2 ms 12380 KB Output is correct
4 Incorrect 6 ms 12380 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Incorrect 2815 ms 91048 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Incorrect 2815 ms 91048 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Incorrect 3775 ms 104512 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Correct 3781 ms 96116 KB Output is correct
3 Incorrect 1026 ms 91476 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Correct 2 ms 12380 KB Output is correct
3 Correct 2 ms 12380 KB Output is correct
4 Incorrect 6 ms 12380 KB Output isn't correct
5 Halted 0 ms 0 KB -