Submission #876800

# Submission time Handle Problem Language Result Execution time Memory
876800 2023-11-22T11:03:38 Z simona1230 Sprinkler (JOI22_sprinkler) C++17
0 / 100
4000 ms 96352 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<<" "<<w<<endl;
    if(i!=1&&lvl!=0)
        upd(p[i],lvl-1);
}
long long get(long long i,long long lvl,long long h)
{
    long long here=1;
    for(long long j=lvl;j<=40;j++)
    {
        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);
    return here%l;
}
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 12212 KB Output is correct
3 Correct 2 ms 12632 KB Output is correct
4 Incorrect 9 ms 12400 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12376 KB Output is correct
2 Execution timed out 4042 ms 90888 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12376 KB Output is correct
2 Execution timed out 4042 ms 90888 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Execution timed out 4005 ms 96352 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Execution timed out 4083 ms 95028 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 12380 KB Output is correct
2 Correct 2 ms 12212 KB Output is correct
3 Correct 2 ms 12632 KB Output is correct
4 Incorrect 9 ms 12400 KB Output isn't correct
5 Halted 0 ms 0 KB -