Cod sursa(job #1468141)

Utilizator Chirita_MateiChirita Matei Chirita_Matei Data 5 august 2015 12:14:26
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <fstream>
#include <vector>

using namespace std;
ofstream fout("bfs.out");
ifstream fin("bfs.in");

vector <int> v[100001];

//struct coada
//{
  //  int in;
    //int sf;
   // int pas;
//};

int n,m,s,x,y,v1[100005];

int bfs(int x)
{
    int a=0,i,k=0,k1=0,k2=0,poz,j;
    //coada c[100000]= {0};
    int c[100001]={0};


    c[1]=x;
    k++;
    v1[x]=-1;

    for(i=1;i<=k;)
    {
        for(j=0;j<v[c[i]].size();j++)
        {
            if(v1[v[c[i]][j]]==0)
            {
                c[++k]=v[c[i]][j];
                if(v1[c[i]]!=-1) v1[c[k]]=v1[c[i]]+1;
                else v1[c[k]]=v1[c[i]]+2;
            }
        }

        for(j=1;j<k;j++)
        {
            c[j]=c[j+1];
        }

        c[k]=0;
        k--;
    }
}

int main()
{
    fin>>n>>m>>s;

    for(int i=1; i<=m; i++)
    {
        fin>>x>>y;

        v[x].push_back(y);
    }

    bfs(s);

    for(int i=1;i<=n;i++)
    {
        if((v1[i]==0)&&(i!=s))
        {
            fout<<-1<<' ';
        }

        else if(i==s)
        {
            fout<<0<<' ';
        }

        else
        {
            fout<<v1[i]<<' ';
        }
    }

    return 0;
}