Cod sursa(job #991563)

Utilizator gapdanPopescu George gapdan Data 30 august 2013 19:55:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<cstdio>
#include<fstream>
using namespace std;
int n,m,s;
int c[100001];
int viz[100001];
struct art
{
    int x;
    art *urm;
};
art *L[100001];
void citire()
{
    int i,a,b;
    art *p;
    scanf("%d%d%d",&n,&m,&s);
    for (i=1;i<=m;++i)
    {
        scanf("%d%d",&a,&b);
        p=new art;
        p->x=b;
        p->urm=L[a];
        L[a]=p;
    }
}
int main()
{
    int i;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    citire();
    art *p;
    int li=1,ls=1;
    c[li]=s;
    viz[s]=1;
        while (li<=ls)
        {
            p=L[c[li]];
            while (p!=NULL)
            {
                int r=p->x;
                if (viz[r]==0)
                {
                    ++ls;
                    c[ls]=r;
                    viz[c[ls]]=viz[c[li]]+1;
                }
                p=p->urm;
            }
            ++li;
        }
    --viz[s];
for (i=1;i<=n;++i)
    if (viz[i]==0)
        if (i!=s) printf("-1 ");
            else printf("0 ");
        else printf("%d ",viz[i]-1);

    return 0;
}