Cod sursa(job #941616)

Utilizator gbi250Gabriela Moldovan gbi250 Data 19 aprilie 2013 10:36:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>

#define noduri 100005
using namespace std;
queue <int> c;
vector <int> vecin[noduri];
int n, m, i, x, y, s, j, cost[noduri];

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    scanf("%d %d %d", &n, &m, &s);
    for(i=1;i<=m;i++)
    {
        scanf("%d %d", &x, &y);
        vecin[x].push_back(y);
    }
    c.push(s);
    memset(cost, -1, sizeof(cost));
    cost[s]=0;
    while(!c.empty())
    {
        i=c.front();
        for(j=0;j<vecin[i].size();j++)
            if(cost[vecin[i][j]]==-1)
            {
                c.push(vecin[i][j]);
                cost[vecin[i][j]]=cost[i]+1;
            }
        c.pop();
    }

    for(i=1;i<=n;i++)
        printf("%d ", cost[i]);
    printf("\n");
    return 0;
}