Submission #785476

#TimeUsernameProblemLanguageResultExecution timeMemory
785476devariaotaSprinkler (JOI22_sprinkler)C++17
3 / 100
4080 ms17584 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN = 2e5 + 5;

ll n, l, q, val[MAXN];
vector<ll> adjl[MAXN];
bool visited[MAXN];

void update(ll now, ll kurang, ll weight) {
  val[now] *= weight % l;
  val[now] %= l;
  
  if (kurang == 0)
  {
    return ;
  }

  visited[now] = true;
  vector<ll> adjn = adjl[now];
  for (int i = 0; i < adjn.size(); ++i)
  {
    ll nxt = adjn[i];
    if (visited[nxt])
    {
      continue ;
    }

    update(nxt, kurang-1, weight);
  }


  visited[now] = false;
}

int main(){
  ios_base::sync_with_stdio(false); cin.tie(0);
  cin >> n >> l;
  for (int i = 1; i <= n-1; ++i)
  {
    ll tmpa, tmpb;
    cin >> tmpa >> tmpb;
    adjl[tmpa].push_back(tmpb);
    adjl[tmpb].push_back(tmpa);
  }

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

  cin >> q;
  while(q--) {
    ll type;
    cin >> type;

    if (type == 1) {
      ll x, d, w;
      cin >> x >> d >> w;
      update(x, d, w);
    } else {
      ll x;
      cin >> x;
      cout << val[x] << "\n";
    }
  }
  return 0;
}

Compilation message (stderr)

sprinkler.cpp: In function 'void update(ll, ll, ll)':
sprinkler.cpp:21:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |   for (int i = 0; i < adjn.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...