Cod sursa(job #1817508)

Utilizator mihai.alphamihai craciun mihai.alpha Data 27 noiembrie 2016 22:43:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

vector <int>v[100001];
queue <int>q;
int viz[100001], folosit[100001];
int main()  {
    FILE *fin, *fout;
    fin = fopen("bfs.in", "r");
    fout = fopen("bfs.out", "w");
    int n, m, s;
    fscanf(fin, "%d%d%d", &n, &m, &s);
    int i;
    for(i = 0;i < m;i++)  {
        int auxx, auxy;
        fscanf(fin, "%d%d", &auxx, &auxy);
        v[auxx].push_back(auxy);
    }
    q.push(s);
    viz[s] = 0;
    folosit[s] = 1;
    int aux, neigh;
    while(!q.empty())  {
        aux = q.front();
        q.pop();
        for(i = 0;i < (int)v[aux].size();i++)  {
            neigh = v[aux][i];
            if(folosit[neigh] == 0)  {
                folosit[neigh] = 1;
                viz[neigh] = viz[aux] + 1;
                q.push(neigh);
            }
        }
    }
    for(i = 1;i <= n;i++)
        if(folosit[i] == 1)
            fprintf(fout, "%d ", viz[i]);
        else
            fprintf(fout, "-1 ");
    fclose(fin);
    fclose(fout);
    return 0;
}