Cod sursa(job #864048)

Utilizator Coco.AndradaCordescu Andrada Coco.Andrada Data 24 ianuarie 2013 17:07:02
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<bitset>
#include<queue>
using namespace std;

int viz[10001],n,i,j,m,a,x,y;
bitset <10001>A[10001];
queue <int> q;
void lee(int a)
{
    int k,x;
    q.push(a); viz[a]=1;
    while(!q.empty())
    {
        x=q.front();
        for(k=1;k<=n;++k)
        {
            if(A[x][k]==1 && viz[k]==0)
            {
                q.push(k);
                viz[k]=viz[x]+1;
            }
        }
        q.pop();
    }
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&a);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&x,&y);
        A[x][y]=1;
    }
    lee(a);
    for (i=1;i<=n;i++)
        printf("%d ",viz[i]-1);
    printf("\n");
    return 0;
}