Cod sursa(job #2768871)

Utilizator VipioanaMirea Oana Teodora Vipioana Data 12 august 2021 14:25:00
Problema Arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbore.in");
ofstream g("arbore.out");
int n,m,i,sum[100001];
bool vf[100001];
vector <int> a[100001];

void dfs(int nod, int s) {
  vf[nod]=1;
  sum[nod]+=s;
  for(auto j: a[nod])
    if(!vf[j])
      dfs(j,s);
}

int main() {
  f>>n>>m;
  for(i=1; i<=n-1; i++) {
    int x,y;
    f>>x>>y;
    a[x].push_back(y);
  }
  for(i=1; i<=m; i++) {
    int x;
    f>>x;
    if(x==1) {
      int p,s;
      f>>p>>s;
      memset(vf,false,sizeof(vf));
      dfs(p,s);
    } else {
      int s;
      f>>s;
      int ok=1;
      for(int j=1; j<=n && ok; j++)
        if(sum[j]==s)
          g<<j<<'\n', ok=0;
      if(ok)
          g<<"-1\n";
    }
  }
  return 0;
}