Cod sursa(job #1935605)

Utilizator bobotheslayerBogdan Zaharia bobotheslayer Data 22 martie 2017 15:45:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#define MAX_N 100005
#define MAX_M 1000000
using namespace std;

vector<long> v[MAX_N];
queue<long> coada;
int d[MAX_N],x,y,s,n,m;
int main()
{
    FILE *intrare,*iesire;
    intrare=fopen("bfs.in","r");
    iesire=fopen("bfs.out","w");
    int i,curent;
    fscanf(intrare,"%d%d%d",&n,&m,&s);
    for (i=1; i<=m; ++i)
    {
        fscanf(intrare,"%d%d",&x,&y);
        v[x].push_back(y);
    }

    for (i=0; i<=n; ++i)
    {
        d[i]=-1;
    }

    coada.push(s);
    d[s]=0;

    while (!coada.empty())
    {
        curent=coada.front();
        for (i=0; i<v[curent].size(); ++i)
        {
            if (d[v[curent][i]]==-1 && v[curent][i]!=0 && i<v[curent].size())
            {
                d[v[curent][i]]=d[coada.front()]+1;
                coada.push(v[curent][i]);
            }
        }
        coada.pop();
    }

    for (i=1; i<=n; ++i)
    {
        fprintf(iesire,"%d ",d[i]);
    }
    return 0;
}