Cod sursa(job #1884732)

Utilizator david.sachelarieDavid Sachelarie david.sachelarie Data 19 februarie 2017 08:43:23
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
vector <int> v[100001];
int q[100000],cost[100001];
void bfs(int root){
    int poza=0,pozb=1,i;
    q[0]=root;
    cost[root]=1;
    while(poza<pozb){
        for(i=0;(unsigned int)i<v[q[poza]].size();i++){
            if(cost[v[q[poza]][i]]==0){
                q[pozb]=v[q[poza]][i];
                cost[q[pozb]]=cost[q[poza]]+1;
                pozb++;
            }
        }
        poza++;
    }
}
int main()
{
    FILE*fin,*fout;
    int n,m,root,a,b,i;
    fin = fopen("bfs.in" ,"r");
    fout = fopen("bfs.out" ,"w");
    fscanf(fin, "%d%d%d" ,&n,&m,&root);
    for(i=0;i<m;i++){
        fscanf(fin, "%d%d" ,&a,&b);
        if(a!=b)
            v[a].push_back(b);
    }
    bfs(root);
    for(i=1;i<=n;i++)
        fprintf(fout, "%d ",cost[i]-1);
    fprintf(fout, "\n");
    fclose(fin);
    fclose(fout);
    return 0;
}