Cod sursa(job #2263215)

Utilizator cristicioteiCiotei Cristian cristiciotei Data 18 octombrie 2018 14:04:08
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <vector>
#include <cstdio>
using namespace std;
vector <int> v[200001];
int vazut[100001];
int coada[100001];
int d[100001];
int n,m,x1,x2,s;
void citire ()
{
    cin>>n>>m>>s;
    for (int i=0 ; i<m ; i++ )
    {
        cin>>x1>>x2;
        v[x1].push_back(x2);
    }
}
void afisare ()
{
    for (int i=0 ; i<n ; i++)
    {
        cout<<i<<"=";
        for (int j=0 ; j<v[i].size() ; j++)
            cout<<v[i][j]<<" ";
        cout<<endl;
    }

}

int main()
{
    freopen ("bfs.in","r",stdin);
    freopen ("bfs.out","w",stdout);
    citire ();
   int st=1 , dr=2 ;
   coada[1]=s;
   d[s]=0;
   vazut[s]=1;
   while (st<dr)
   {
       int nod=coada[st];
       vazut[nod]=1;
       for (int i=0 ; i<v[nod].size();i++)
       {
           if (vazut[v[nod][i]]==0)
           {
               d[v[nod][i]]=d[nod]+1;
               coada[dr]=v[nod][i];
               dr++;
               vazut[v[nod][i]]=1;
           }
       }
       st++;
   }
   for (int i=1 ; i<=n ; i++)
   if (vazut[i]!=0)
    cout<<d[i]<<" ";
   else
    cout<<-1<<" ";
    return 0;
}