Cod sursa(job #826245)

Utilizator ericptsStavarache Petru Eric ericpts Data 30 noiembrie 2012 15:06:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector <int> nod[100002];
int cost[100002];
queue <int> bfs;
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int n,m,r;
    int a,b,i;
    int c;
    scanf("%d%d%d",&n,&m,&r);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&a,&b);
        nod[a].push_back(b);
    }
    cost[r] = 1;
    bfs.push(r);
    while(!bfs.empty())
    {
        c = bfs.front();
        bfs.pop();
        a = nod[c].size();
        for(i=0;i<a;++i)
            if(!cost[nod[c][i]])
            {
                cost[nod[c][i]] = cost[c]+1;
                bfs.push(nod[c][i]);
            }
    }
    for(i=1;i<=n;++i)
        printf("%d ",cost[i]-1);
    return 0;
}