Cod sursa(job #1259974)

Utilizator binicBinica Nicolae binic Data 10 noiembrie 2014 19:16:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,x,i,a,b,c[100010],s[100010];
struct nod
{
    int nr;
    nod *urm;
}*p,*v[100010];
void add(nod *&d,int x)
{
    nod *p;
    p=new nod;
    p->nr=x;
    p->urm=d;
    d=p;
}
void BFS(int x)
{
    nod *p;
    s[1]=x;
    int l=1;
    c[x]=0;
    for(int i=1;i<=l;i++)
        for(p=v[s[i]];p!=0;p=p->urm)
            if(c[p->nr]==-1)
            {
                c[p->nr]=c[s[i]]+1;
                l++;
                s[l]=p->nr;
            }
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d %d %d",&n,&m,&x);
    for(i=1;i<=m;i++)
    {
        scanf("%d %d",&a,&b);
        add(v[a],b);
    }
    memset(c,-1,sizeof(c));
    BFS(x);
    for(i=1;i<=n;i++)
        printf("%d ",c[i]);
    return 0;
}