Cod sursa(job #1882986)

Utilizator david.sachelarieDavid Sachelarie david.sachelarie Data 17 februarie 2017 17:21:48
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
vector <int> v[100001];
int sume[100001];
void dfs(int nod,int suma){
    int i;
    sume[nod]+=suma;
    //printf("%d\n" ,v[nod].size());
    for(i=0;(unsigned int)i<v[nod].size();i++)
        dfs(v[nod][i],suma);
}
int main(){
    FILE*fin,*fout;
    int n,i,m,a,b,x,suma,nod,flag,j;
    fin = fopen("arbore.in" ,"r");
    fout = fopen("arbore.out" ,"w");
    fscanf(fin, "%d%d" ,&n,&m);
    for(i=0;i<n-1;i++){
        fscanf(fin, "%d%d" ,&a,&b);
        if(a<b)
            v[a].push_back(b);
        else
            v[b].push_back(a);
    }
    for(i=0;i<n;i++){
        fscanf(fin, "%d" ,&x);
        if(x==1){
            fscanf(fin, "%d%d" ,&nod,&suma);
            dfs(nod,suma);
        }
        else{
            fscanf(fin, "%d" ,&suma);
            flag=0;
            j=1;
            while(flag==0 && j<=n){
                if(sume[j]==suma){
                    flag=1;
                    fprintf(fout, "%d\n" ,j);
                }
                j++;
            }
        }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}