Cod sursa(job #2570547)

Utilizator yo_andrei_2003Murica Andrei yo_andrei_2003 Data 4 martie 2020 17:32:09
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>

using namespace std;
queue<int>q;
vector<int>v[100000];
char mar[100004];
int val[100004];
void bfs(int a) {
    for(int i=0;i<v[a].size();i++) {
        if (mar[v[a][i]]==0) {
            q.push(v[a][i]);
            mar[v[a][i]]=1;
            val[v[a][i]]=val[a]+1;
        }
    }
    q.pop();
    if (!q.empty()) {
        bfs(q.front());
    }
}
int main()
{
    int i, n, m, x, b, a;
    FILE *fin, *fout;
    fin=fopen("bfs.in" ,"r");
    fout=fopen("bfs.out" ,"w");
    fscanf(fin, "%d%d%d" ,&n ,&m ,&x);
    for (i=0;i<m;i++) {
        fscanf(fin, "%d%d" ,&a ,&b);
        v[a].push_back(b);
    }
    q.push(x);
    mar[x]=1;
    bfs(x);
    for (i=1;i<=n;i++) {
        if (mar[i]==1) {
            fprintf(fout, "%d " ,val[i]);
        }
        else {
            fprintf(fout, "-1 ");
        }
    }
    return 0;
}