Cod sursa(job #2268927)

Utilizator NairBalanica Ciprian Nair Data 25 octombrie 2018 15:42:01
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

struct nod{int nd; nod *next;};

int ic,sc,coada[100],s[100];
nod *L[100];

void bf()
{
    nod *t;
    while (ic <= sc)
    {
        t = L[coada[ic]];
        while(t)
        {
            if(s[t->nd] == -1)
            {
                sc++;
                coada[sc] = t->nd;
                s[t->nd] = s[coada[ic]] + 1;
            }
            t = t -> next;
        }
        ic++;
    }
}

int main()
{
    int n,i,j,p,m;
    nod *nou;
    ifstream f("bfs.in");
    f>>n>>m>>p;
    for(i=1;i<=n;i++)
    {
        L[i]=NULL;
        s[i]=-1;
    }
    while(m-- != 0)
    {
        f >> i >> j;
        nou = new nod;
        nou -> nd=j;
        nou -> next=L[i];
        L[i] = nou;
    }
    ic = sc = 1; coada[sc] = p; s[p] = 0;
    bf();
    ofstream g("bfs.out");
    for(i = 1; i <= n; i++)
        g << s[i] << " ";
    f.close();
    g.close();

}