Cod sursa(job #1732197)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 21 iulie 2016 02:45:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <cstdio>
#include <vector>

using namespace std;

vector<int> v[100010];
int d[150000],vaz[100010],r[100010];

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int n,m,s,x,y;
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        v[x].push_back(y);
    }
    for(int i=1;i<=n;i++)
        r[i]=-1;
    d[0]=1;d[1]=s;x=1;y=1;vaz[s]=1;r[s]=0;
    while(d[0]>0)
    {
        for(int i=0;i<v[d[x]].size();i++)
            if(vaz[v[d[x]][i]]==0)
            {
                r[v[d[x]][i]]=r[d[x]]+1;
                y++;
                d[0]++;
                d[y]=v[d[x]][i];
                vaz[v[d[x]][i]]=1;
            }
        x++;d[0]--;
    }
    for(int i=1;i<=n;i++)
        printf("%d ",r[i]);
    return 0;
}