Cod sursa(job #1961981)

Utilizator ioana_99Ioana Marin ioana_99 Data 11 aprilie 2017 14:56:31
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream f("cerere.in");
ofstream g("cerere.out");

vector <int> a[100010];
int viz[100010],v[100010],s[100001],rez[100001],n,nr=n;
void citire()
{
    f>>n;
    for(int i=1; i<=n; i++)
        f>>v[i];
        int i,j;
    while(f>>i>>j)
        a[i].push_back(j);
}
void dfs(int x)
{
   if(v[x]==0)
      rez[x]=0;
    else
     rez[x]=rez[s[nr-v[x]]]+1;

       for(int i=0; i<a[x].size(); i++)
            if(viz[a[x][i]]==0)
          {
              viz[a[x][i]]=1;
              nr++;
              s[nr]=a[x][i];
              dfs(a[x][i]);
              viz[a[x][i]]=0;
              nr--;
            }
}
int main()
{
    citire();
    dfs(1);
    for(int i=1; i<=n; i++)
        g<<rez[i]<<" ";
    return 0;
}