Cod sursa(job #1609640)

Utilizator andrey-jkOtopeleanu Andrei Cristian andrey-jk Data 22 februarie 2016 21:58:11
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,m,i,z,op,x,y,viz[100001],OK,p,t[100001];
vector <int> v[100001];
ifstream f("arbore.in");
ofstream g("arbore.out");
void init()
{
    int i;
    for(i=1;i<=n;i++)
        viz[i]=0;
}
void BF(int X)
{
    int i,C[100001],p,u,k;
    p=u=1;
    C[p]=X;
    viz[X]=1;
    t[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]]=1;
            t[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;
            init();
            BF(x);
        }
        else
        {
            i=1;
            f>>x;
            OK=0;p=-1;
            while(i<=n&&!OK)
            {
                if(t[i]==x)
                {
                    p=i;
                    OK=1;
                }
                i++;
            }
            g<<p<<endl;
        }
    }
    return 0;
}