Cod sursa(job #1477444)

Utilizator andreiudilaUdila Andrei andreiudila Data 26 august 2015 12:16:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct celula{
  int val;
 celula *next;
};
celula *graf[100001];
celula *a;
int n,m,s,i,j,x,y,d[100001],viz[100001],q[100001];
int main()
{
    fin>>n>>m>>s;
    for(i=1;i<=m;i++)
        {

        fin>>x>>y;
        a=new celula;
        a->next=graf[x];
        a->val=y;
        graf[x]=a;

        /*a=new celula;
        a->next=graf[y];
        a->val=x;
        graf[y]=a;
        */
        }

        q[1]=s;

        int st=1, en=1;

        for(i=1;i<=n;i++)
            d[i]=-1;

        d[s]=0;
        viz[s]=1;

        while(st<=en)
        {
            int nod=q[st];
            for(a=graf[nod];a!=NULL;a=a->next)
                {
                    if(viz[a->val]==0)
                    {
                        d[a->val]=d[nod]+1;
                        viz[a->val]=1;
                        q[++en]=a->val;

                    }


                }
                st++;

        }
        for(i=1;i<=n;i++)
            fout<<d[i]<<" ";
    return 0;
}