Cod sursa(job #2518999)

Utilizator marinaoprOprea Marina marinaopr Data 6 ianuarie 2020 21:24:46
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

FILE *fin = fopen("bfs.in", "r");
FILE *fout = fopen("bfs.out", "w");

vector <vector <int> > vf;
queue <int> q;

int n,m,s,i,dist[100005],x,y,elem;

int main()
{
    fscanf(fin, "%d%d%d", &n,&m,&s);
    vf.resize(n+1);

    for(i=1; i<=m; ++i)
    {
        fscanf(fin, "%d%d", &x,&y);
        vf[x].push_back(y);
    }

    for(i=1; i<=n; ++i)
        dist[i] = -1;

    q.push(s);
    dist[s] = 0;
    while(!q.empty())
    {
        elem = q.front();

        for(i=0; i<vf[elem].size(); ++i)
            if(dist[vf[elem][i]] == -1)
            {
                dist[vf[elem][i]] = dist[elem]+1;
                q.push(vf[elem][i]);
            }

        q.pop();
    }

    for(i=1; i<=n; ++i)
        fprintf(fout, "%d ", dist[i]);

    fclose(fin);
    fclose(fout);
    return 0;
}