Cod sursa(job #1404466)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 28 martie 2015 11:36:57
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <cstdio>
#define nm 100001
using namespace std;
ofstream g("bfs.out");
int n,m,s,coada[2][600000],t,i,x,y,p,u;
unsigned a[5001][5001],ap[100001];
int main()
{
    freopen("bfs.in","r",stdin);
    scanf("%d%d%d",&n,&m,&t);
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        a[x][y]=1;
    }
    p=u=1;
    coada[0][1]=t;
    coada[1][1]=0;
    ap[t]=1;
    while(p<=u)
    {
        for(i=1;i<=n;i++)
        {
            if(a[coada[0][p]][i]==1&&ap[i]==0)
            {
                ap[i]=1;
                coada[0][++u]=i;
                coada[1][u]=coada[1][p]+1;
            }
        }
        p++;
    }
    for(i=1;i<=n;i++)
    {
        ap[coada[0][i]]=coada[1][i];
    }
    for(i=1;i<=n;i++)
    {
        if(ap[i]==0&&i!=t) g<<-1<<' ';
        else g<<ap[i]<<' ';
    }
    return 0;
}