Cod sursa(job #367871)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 23 noiembrie 2009 18:00:13
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<iostream>
#include<fstream>
using namespace std;
#define MAX 100001
int s,n, *a[MAX],d[100000];

void read()
{
    ifstream fin("bfs.in");
    int m;
    int i,j;
    fin>>n>>m>>s;
    for(int i=1;i<=n;i++)
        a[i]=new int[n+1],d[i]=-1;
    for(;m;--m)
    {
        fin>>i>>j;
        a[i][j]=1;
    }
    fin.close();
}

void bfs()
{
    int *coada=new int [n+1],st=1,dr=1,k,i;
    coada[1]=s;
    d[s]=0;
    while(st<=dr)
    {
        k=coada[st];
        for(i=1;i<=n;i++)
            if(a[k][i]==1 && d[i]==-1)
            {
                coada[++dr]=i;
                d[i]=d[k]+1;
            }
        st++;
    }
}

void write()
{
    ofstream fout("bfs.out");
    for(int i=1;i<=n;i++)
        fout<<d[i];
}

int main()
{
    read();
    bfs();
    write();
    return 0;
}