Cod sursa(job #941211)

Utilizator gbi250Gabriela Moldovan gbi250 Data 18 aprilie 2013 10:51:41
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <vector>
#include <queue>
#define noduri 100005
using namespace std;
queue <int> c;
vector <int> vecin[noduri], cost;
int n, m, i, x, y, s, j;

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);
        cost.push_back(-1);
    }
    cost.reserve(n);
    c.push(s);
    cost[s]=0;
    while(!c.empty())
    {
        i=c.front();
        for(j=0;j<=vecin[i].size()-1;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;
}