Cod sursa(job #1376706)

Utilizator OnimushaLordTiberiu Copaciu OnimushaLord Data 5 martie 2015 18:27:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
# include <cstdio>
# include <vector>
# include <algorithm>
# define pb push_back
# define N 100010
# define vecin (*it)

using namespace std;

int i,j,nr,n,m,s,x,y;
vector <int> G[N];
int sol[N];
bool sel[N];

struct coada
{
    int nod,cost;
}q[N];



void bf()
{
    int nod;
    q[++nr].nod=s;
    q[nr].cost=0;
    sel[s]=true;

    for(int i=1; i<=nr; ++i)
    {
        nod=q[i].nod;
        for(vector <int> :: iterator it=G[nod].begin(); it!=G[nod].end(); ++it)
            if(!sel[vecin])
            {
                sel[vecin]=true;
                q[++nr].nod=vecin;
                q[nr].cost=q[i].cost+1;
            }
    }
}

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    scanf("%d %d %d\n", &n, &m, &s);
    for(i=1; i<=m; ++i)
    {
        scanf("%d %d\n", &x, &y);
        G[x].pb(y);
    }
    bf();
    for(i=1; i<=n; ++i)
        sol[i]=-1;
    for(i=1; i<=nr; ++i)
        sol[q[i].nod]=q[i].cost;

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


    fclose(stdin);
    fclose(stdout);
    return 0;

}