Cod sursa(job #1750901)

Utilizator otnielMercea Otniel otniel Data 31 august 2016 14:05:06
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 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=0;i<m;i++)
   {
        int nod1,nod2;
        f>>nod1>>nod2;

        if(distante[nod1]==0)
        {
            struct nod *p;
            p=new nod;
            distante[nod1]=-1;
            a[nod1]=p;
        }
        struct nod *p;
        p=a[nod1];
        while(p->urm!=NULL)
        p=p->urm;
        p->info=nod2;
        p->urm=new nod;

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




}