Cod sursa(job #800008)

Utilizator gegeadDragos Gegea gegead Data 20 octombrie 2012 15:43:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
using namespace std;
int n,m,viz[100001];
vector <int> l[100001];



void bfs(int u)
{
    int c;vector<int>::iterator it;
    queue <int> q;
    for(int i=1;i<=n;++i)
        viz[i]=-1;
    q.push(u);
    viz[u]=0;
    while(!q.empty())
    {
        c=q.front();
        for(it=l[c].begin();it!=l[c].end();++it)
            if(viz[*it]==-1)
            {
                q.push(*it);
                viz[*it]=viz[c]+1;
            }
        q.pop();
    }
}





int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int i,u,v,s;
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=m;++i)
    {
        scanf("%d%d",&u,&v);
        l[u].push_back(v);
    }
    bfs(s);
    for(i=1;i<=n;++i)
        printf("%d ",viz[i]);
    printf("\n");
    return 0;
}