Cod sursa(job #1609621)

Utilizator andrey-jkOtopeleanu Andrei Cristian andrey-jk Data 22 februarie 2016 21:42:44
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,m,i,z,op,x,y,viz[100001],OK,p;
vector <int> v[100001];
ifstream f("arbore.in");
ofstream g("arbore.out");
void BF(int x)
{
    int i,C[100001],p,u,k;
    p=u=1;
    C[p]=x;
    viz[x]=viz[x]+y;
    while(p<=u)
    {
        k=C[p];
        for(i=0;i<v[k].size();i++)
            if(viz[v[k][i]]==0)
        {
            C[++u]=v[k][i];
            viz[v[k][i]]+=y;
        }
        p++;
    }

}
int main()
{
    f>>n>>m;
    for(i=1;i<=n-1;i++)
    {
        f>>x>>y;
        v[x].push_back(y);
    }
    for(z=1;z<=m;z++)
    {
        f>>op;
        if(op==1)
        {
            f>>x>>y;
            BF(x);
        }
        else
        {
            i=1;
            f>>x;
            OK=0;p=-1;
            while(i<=n&&!OK)
            {
                if(viz[i]==x)
                {
                    p=i;
                    OK=1;
                }
                i++;
            }
            g<<p<<endl;
        }
    }
    return 0;
}