Cod sursa(job #2263281)

Utilizator Teodor01Dorde Teodor Teodor01 Data 18 octombrie 2018 16:06:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include<vector>
#include<queue>
#define pb push_back
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<int>v[100001];
bool f[100001];
int c,dist[100001];
void bfs(int nod){
    f[nod]=1;
    int i;
    dist[nod]=0;
    queue<int>q;
    q.push(nod);
    while(q.size()>0){
        int elem=q.front();
        for(i=0;i<v[elem].size();i++){
            if(f[v[elem][i]]==0){
                dist[v[elem][i]]=1+dist[elem];
                f[v[elem][i]]=1;
                q.push(v[elem][i]);
            }
        }
        q.pop();
    }
}

int main()
{
    int n,m,i,j,s;
    cin>>n>>m>>s;
    for(i=1;i<=m;i++){
        int a,b;
        cin>>a>>b;
        v[a].pb(b);
    }
    bfs(s);
    for(i=1;i<=n;i++){
        if(f[i]==0)
            cout<<-1<<" ";
        else
            cout<<dist[i]<<" ";
    }
    return 0;
}