Cod sursa(job #1750891)

Utilizator otnielMercea Otniel otniel Data 31 august 2016 13:40:32
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<iostream>
#include<fstream>
using namespace std;
struct nod
{
    int info;
    nod *urm;

};
nod *a[100004];
int distante [100004];
int coada[1000003];
void bfs(int nod)
{

    int inceput,sfarsit;
    inceput=sfarsit=1;
    coada[inceput]=nod;
    distante[nod]++;

    while(inceput<=sfarsit)
    {

        int tata=coada[inceput];

        struct  nod *q=a[tata];

        while(q->urm)
        {
            if(distante[q->info]==-1)
            {sfarsit++;
            coada[sfarsit]=q->info;
            distante[q->info]=distante[tata]+1;
            }
            q=q->urm;

        }

        inceput++;
    }



}

int main()
{

    ifstream f("bfs.in");
    ofstream g("bfs.out");
    int n,m,s;

    f>>n>>m>>s;

    for(int i=1;i<=n;i++)
        {a[i]=new nod;
        distante[i]=-1;}

   for(int i=0;i<m;i++)
   {
        int nod1,nod2;
        f>>nod1>>nod2;
        nod *p;
        p=a[nod1];
        while(p->urm!=NULL)
        p=p->urm;
        p->info=nod2;
        p->urm=new nod;
        p=a[nod1];
   }

    bfs(s);



    for(int i=1;i<=n;i++)
        g<<distante[i]<<" ";




}