Cod sursa(job #1264163)

Utilizator oana.claudiaNew Test oana.claudia Data 15 noiembrie 2014 16:14:55
Problema Arbore Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

vector < vector<int> > v;
vector < long > suma;

int n,m;
ifstream f("arbore.in");
ofstream g("arbore.out");

void calc(int p, long s){

    suma[p]+=s;
    for(int i=0;i<v[p].size();i++){
        calc(v[p][i],s);
    }


}

int main(){
    int i,j,x,y,op,p;
    long s;
    f>>n>>m;
    for (i=0;i<=n;i++){
        v.push_back(vector<int>());
        suma.push_back(0);
    }

    for(i=1;i<=n-1;i++){
        f>>x>>y;
        if(x>y){
            int aux=x;
            x=y;
            y=aux;
        }
        v[x].push_back(y);
    }

    for(i=1;i<=m;i++){
        f>>op;
        if(op==1){
            f>>p>>s;
            calc(p,s);
        }
        else {
            f>>s;
            bool ok=false;
            for(int k=1;k<=n&&!ok;k++)
                if(suma[k]==s){
                    ok=true;
                    g<<k<<'\n';
                };
            if(!ok)
                g<<-1<<'\n';
        }

    }



    f.close();
    g.close();
    return 0;
}