Cod sursa(job #1087782)

Utilizator geniucosOncescu Costin geniucos Data 19 ianuarie 2014 21:09:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
#include<vector>
using namespace std;
int x11,y11,i,n,m,S,nod,p,u,vecin,dr[100009],coada[100009];
vector < int > v[100009];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
scanf("%d",&S);
for(i=1;i<=m;i++)
{
    scanf("%d",&x11);
    scanf("%d",&y11);
    v[x11].push_back(y11);
}
for(i=1;i<=n;i++)
    dr[i]=-1;//////distanta pana la i este -1(nu am ajuns acolo inca)
p=u=1;
coada[1]=S;
dr[S]=0;
while(p<=u)
{
    nod=coada[p];
    p++;
    for(i=0;i<v[nod].size();i++)
    {
        vecin=v[nod][i];
        if(dr[vecin]==-1)
        {
            /////daca nu am ajuns inca la vecinul asta
            dr[vecin]=dr[nod]+1;
            u++;
            coada[u]=vecin;
        }
    }
}
for(i=1;i<=n;i++)
    printf("%d ",dr[i]);
return 0;
}