Cod sursa(job #1363934)

Utilizator IonutLLuca Ionut IonutL Data 27 februarie 2015 13:01:27
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include<fstream>
#include<vector>
using namespace std;

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

int c[100000],viz[100000],n,t[100000],s;

vector<int> a[100001];
vector<int>::iterator it;

void bfs(int nod)
{int u,p,i,x,ok,k=0;
u=p=viz[nod]=1;
c[1]=nod;
while(p<=u)
    {x=c[p];
     for(i=1;i<=n;i++)
        {ok=0;
         for(it=a[x].begin();it!=a[x].end();it++)
            if(*it==i) ok=1;
         if(ok==1 && viz[i]==0)   {c[++u]=i;
                                   viz[i]=1;
                                   t[i]=x;
                                  }
        }
        p++;
    }

}

void parc(int fin)
{int k=0,i;
i=fin;
while(i)
    {i=t[i];
     k++;
    }
k--;
if(k==0) if(s==fin) g<<"0"<<" ";
            else g<<"-1"<<" ";
    else g<<k<<" ";
}



int main()
{int m,x,y,i;
f>>n>>m>>s;
for(i=1;i<=m;i++)
    {f>>x;
     f>>y;
    a[x].push_back(y);
    }


bfs(s);

for(i=1;i<=n;i++)
    parc(i);


}