Cod sursa(job #921262)

Utilizator vandrei95Zamfir Vlad vandrei95 Data 20 martie 2013 21:15:52
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.28 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 n,m,i,j,X,Y,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;
    }
    int vfcrt,maxd=0;
    prim=ultim=new nod;
    prim->vf=X;
    d[X]=0;
    viz[X]=1;
    prim->next=ultim;
    nod *temp;
    while(prim!=NULL)
    {
        vfcrt=prim->vf;
        temp=p[vfcrt];
        while(p[vfcrt]!=NULL)
        {
            if(viz[p[vfcrt]->vf]==0)
            {
                nou=new nod;
                nou->vf=p[vfcrt]->vf;
                viz[nou->vf]=1;
                ultim->next=nou;
                ultim=ultim->next;
                ultim->next=NULL;
                d[nou->vf]=d[vfcrt]+1;
            }
            p[vfcrt]=p[vfcrt]->next;
        }
        p[vfcrt]=temp;
        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]<<" ";
    }
}