Cod sursa(job #921288)

Utilizator vandrei95Zamfir Vlad vandrei95 Data 20 martie 2013 21:33:04
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <iostream>
#include<fstream>
#define N 100001
using namespace std;
struct nod
{
    int vf;
    nod *next;
}*prim,*ultim,*p[N];
int d[N],viz[N];
int main()
{
    int i,j,n,m,X,x,y;
    fstream f("bfs.in",ios::in),g("bfs.out",ios::out);
    f>>n>>m>>X;
    nod *nou;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        nou=new nod;
        nou->vf=y;
        nou->next=p[x];
        p[x]=nou;
    }
    prim=ultim=new nod;
    prim->vf=X;
    prim->next=ultim;
    viz[X]=1;
    d[X]=0;
    int vfcrt;
    while(prim!=NULL)
    {
        vfcrt=prim->vf;
        while(p[vfcrt]!=NULL)
        {
            if(viz[p[vfcrt]->vf]==0)
            {
                nou=new nod;
                nou->vf=p[vfcrt]->vf;
                ultim->next=nou;
                ultim=nou;
                viz[nou->vf]=1;
                ultim->next=NULL;
                d[ultim->vf]=d[vfcrt]+1;
            }
            p[vfcrt]=p[vfcrt]->next;
        }
        prim=prim->next;
    }
    for(i=1;i<=n;i++)
    {
        if(i==X)
            g<<0<<" ";
        else
            if(d[i]==0)
                g<<-1<<" ";
            else
                g<<d[i]<<" ";
    }
}