Cod sursa(job #2491984)

Utilizator luci.tosaTosa Lucian luci.tosa Data 13 noiembrie 2019 19:21:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100000
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> g[NMAX+1];
queue <int> q;
int n,m,s,cost[NMAX+1];
bool viz[NMAX+1];
void BFS(int nod) {
    viz[nod]=1;
    q.push(nod);
    while(q.empty()==false) {
        int aux=q.front();
        q.pop();
        for(int i=0;i<g[aux].size();i++) {
            if(viz[g[aux][i]]==0) {
                viz[g[aux][i]]=1;
                cost[g[aux][i]]=cost[aux]+1;
                q.push(g[aux][i]);
            }
        }
    }
}
int main()
{
    fin>>n>>m>>s;
    for(int i=1;i<=m;i++) {
        int a,b;
        fin>>a>>b;
        g[a].push_back(b);
    }
    BFS(s);
    for(int i=1;i<=n;i++)
        if(i==s)
            fout<<"0 ";
        else if(cost[i]==0)
            fout<<"-1 ";
        else
            fout<<cost[i]<<" ";
    return 0;
}