Cod sursa(job #1145120)

Utilizator jul123Iulia Duta jul123 Data 17 martie 2014 21:42:59
Problema BFS - Parcurgere in latime Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<iostream>
#include<vector>
#include<cstdio>

using namespace std;

vector<int> a[100000];
int viz[100000], q[100000], d[100000];
int main()
{
    int n, m, s, x, y, i, prim, ultim;
    FILE *fin, *fout;
    fin=fopen("bfs.in", "r");
    fout=fopen("bfs.out", "w");

    fscanf(fin, "%d %d %d", &n, &m, &s);
    for(i=0; i<m; i++) {
        fscanf(fin, "%d %d", &x, &y);
        a[x-1].push_back(y-1);
    }
    s--;
    for(i=0; i<n; i++) {
        viz[i]=0;
        d[i]=-1;
    }
    prim=0;
    ultim=0;
    q[0]=s;
    viz[s]=1;
    ultim++;
    d[s]=0;
    while(prim<=ultim) {
        for(i=0; i<a[q[prim]].size(); i++)
            if(viz[a[q[prim]][i]]==0) {
                q[ultim]=a[q[prim]][i];
                viz[q[ultim]]=1;
                ultim++;
                d[q[ultim-1]]=d[q[prim]]+1;
            }
        prim++;
    }
    for(i=0; i<n; i++)
        fprintf(fout, "%d ", d[i]);

}