Cod sursa(job #2487769)

Utilizator programare_competitiva_xdxProgramare Xcompetitiva programare_competitiva_xdx Data 5 noiembrie 2019 18:34:06
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout("bfs.out");
int s,x;
int n,m;
int a,b;
int it;
vector<int>v[100000];
int ans[100000];
bool viz[100000];
queue<int>q;
void bfs(int s)
{
q.push(s);
while(!q.empty())
{
viz[s]=true;
int nod=q.front();

q.pop();
   // for(auto it: v[nod]){
    for(int i=0;i<v[nod].size();i++){

    if(!viz[v[nod][i]])
    {

        ans[v[nod][i]]=ans[nod]+1;
        viz[v[nod][i]]=true;
        q.push(v[nod][i]);
    }
}

}

}
int main()
{
    fin>>n>>m>>s;
    for(int i=0;i<m;i++)
    {

        fin>>a>>b;
        v[a].push_back(b);
    }


bfs(s);
for(int i=1;i<=n;i++) if(ans[i]==0) ans[i]=-1;
ans[s]=0;
for(int i=1;i<=n;i++) fout<<ans[i]<<" ";
    return 0;
}