Cod sursa(job #804768)

Utilizator bratualexBratu Alexandru bratualex Data 30 octombrie 2012 13:50:41
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>

using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");

struct coada {
    int inf;
    int tata;
    coada *next;
};
int main()
{
    int m,n,x,a,b,i,j,ad[100][100],viz[100],cost[100];
    fin>>n>>m>>x;
    for (i=0;i<=n;i++)
    {
        cost[i]=0;
        viz[i]=0;
    }
    for (i=1;i<=n;i++)
        for (j=1;j<=n;j++)
            ad[i][j]=0;
    for ( i=0;i<m;i++)
    {
        fin>>a>>b;
        ad[a][b]=1;
    }
    /*
    for(i=1;i<=n;i++)
    {
        for (j=1;j<=n;j++)
            fout<<ad[i][j];
        fout<<"\n";
    }
    */
    coada *sir,*ultim,*aux;
    sir=new coada;
    sir->inf=x;
    sir->next=NULL;
    sir->tata=0;
    ultim=sir;
    viz[x]=1;
    cost[0]=-1;
    //last=0;
    while ( sir )
    {
        //fout<<sir->inf<<"   ";
        cost[sir->inf]=cost[sir->tata]+1;
        viz[sir->inf]=1;
        for (i=1;i<=n;i++)
        {
            if ( ad[sir->inf][i] && !viz[i] )
            {
                aux= new coada;
                ultim->next=aux;
                aux->inf=i;
                aux->tata=sir->inf;
                aux->next=NULL;
                ultim=aux;
            }
        }

        sir=sir->next;

    }
    for (i=1;i<=n;i++)
        if ( i!=x )
            if (cost[i])
                fout<<cost[i]<<" ";
            else
                fout<<-1<<" ";
        else
            fout<<0<<" ";
    return 0;
}