Cod sursa(job #855185)

Utilizator SovStoStoicescu Mihail Cristian SovSto Data 14 ianuarie 2013 19:08:38
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include<vector>
 
using namespace std;
 
int c[100073],viz[100073];
vector <int> v[100073];
int s;
 
 
 
 
void bfs()
{
    int j=1,x=1;
    c[x]=s;
 
    while (x<=j)
    {
        for (int i=0;i<v[c[x]].size();++i)
        if (!viz[v[c[x]][i]]&& v[c[x]][i]!=c[x])
            {
                j++;
                viz[v[c[x]][i]]=viz[c[x]]+1;
                c[j]=v[c[x]][i];
            }
 
     x++;
     }
    }
 
 
int main()
{
 
    int m,n,x,y;
 
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
 
    scanf("%d%d%d",&n,&m,&s);
 
    for (int i=0;i<m;i++)
    {
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
    }
 
    bfs();
 
    for (int i=1;i<=n;i++)
        if (viz[i] && i!=s)
            printf("%d ",viz[i]);
        else if (i==s)
                printf("0 ");
        else printf("-1 ");
}