Cod sursa(job #1830912)

Utilizator mateibanuBanu Matei Costin mateibanu Data 17 decembrie 2016 11:30:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>
#include <queue>

using namespace std;

FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");

struct nod
{
    int inf;
    nod *urm;
}*v[100010];

int d[100010],q[100010];

void adaug(nod *&prim,int x)
{
    nod* nou;
    nou = new nod;
    nou->inf=x;
    nou->urm=prim;
    prim=nou;
}

int main()
{
    int n,m,s,i,x,y,p,u,r,nr;
    nod *j;
    fscanf(f,"%d%d%d",&n,&m,&s);
    for (i=1;i<=m;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        if (x!=y) adaug(v[x],y);
    }
    /*for (i=1;i<=n;i++)
    {
        for (j=v[i];j!=NULL;j=j->urm)
        {
            fprintf(g,"%d ",j->inf);
        }
        fprintf(g,"\n");

    }*/
    q[1]=s;
    d[s]=1;p=1;u=1;
    while(p<=u)
    {
        r=q[p];
        for (j=v[r];j!=NULL;j=j->urm)
            if (d[j->inf]==0)
        {
            u++;
            q[u]=j->inf;
            d[j->inf]=d[r]+1;
        }
        p++;
    }
    for (i=1;i<=n;i++)
        fprintf(g,"%d ",d[i]-1);
    fclose(f);
    fclose(g);
    return 0;
}