Cod sursa(job #745294)

Utilizator alexalbu95Albu Alexandru alexalbu95 Data 10 mai 2012 22:15:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");

struct point
{ int nod;
  point *urm;
};
point *G[100010];

int n, m, i, x, y, nod_1,nod_2;
int D[100001]={-1}, C[100001], U[100001];

void add(int x, int y)
{
    point *p;
    p = new point;
    p->nod = y;
    p->urm = G[x];
    G[x] = p;
}

void creare()
{
    point *p;

    f>>n>>m>>nod_1;
    for(; m; --m)
    {
        f>>x>>y;
		add(x, y);
    }
}

void bfs(int v)
{
    point *p;
    int nod, s, d;
    s=d=1;
    C[1]=v;
    U[v]=1;
    D[v]=0;
    for (; s<=d; s++)
    {
        nod=C[s];
        for(p=G[nod]; p!=NULL; p=p->urm)
            if(!U[p->nod])
			{
			    C[++d]=p->nod;
                U[p->nod]=1;
                D[p->nod]=D[nod]+1;
            }
    }
}

int main()
{
    creare();
    bfs(nod_1);
    for(i=1; i<=n; ++i)
        if(D[i]==0 && i!=nod_1) g<<-1<<" ";
        else g<<D[i]<<" ";
}