Cod sursa(job #269239)

Utilizator za_wolfpalianos cristian za_wolf Data 2 martie 2009 17:53:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
#define NMAX 100100
vector<int> x[NMAX];
queue<int> q;
int a,b,i,j,n,m,k,s,z[NMAX];
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    
    scanf("%d%d%d",&n,&m,&k);
    for (i=1;i<=m;++i)
    {
        scanf("%d%d",&a,&b);
        x[a].push_back(b);
    }
    q.push(k);
    z[k]=1;
    while (!q.empty())
    {
        int nod = q.front();
        q.pop();
        for (i=0;i<(int)x[nod].size();++i)
        {
            int a = x[nod][i];
            if (z[a]==0)
            {
                z[a]=z[nod]+1;
                q.push(a);
            }
        }
    }

    for (i=1;i<=n;++i)
        printf("%d ",z[i]-1);
}