Cod sursa(job #2278819)

Utilizator alexionpopescuPopescu Ion Alexandru alexionpopescu Data 8 noiembrie 2018 16:37:15
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include<vector>
#include<queue>
#include<string.h>
using namespace std;
vector<int> a[100001];
queue<int> q;
int dist[100001],n,m,s;
void cit(){
    freopen("bfs.in","r",stdin);
    int i,j,h;
    scanf("%i%i%i",&n,&m,&s);
    for(h=1;h<=m;h++){
        scanf("%i%i",&i,&j);
        a[i].push_back(j);
    }
    memset(dist,-1,sizeof(dist));
}
void bfs(){
    int k,i;
    dist[s]=0;q.push(s);
    while(!q.empty()){
        k=q.front();
        q.pop();
        for(i=0;i<a[k].size();i++)
            if(dist[a[k][i]]==-1){
                dist[a[k][i]]=dist[k]+1;
                q.push(a[k][i]);
            }
    }
}
void afis(){
    freopen("bfs.out","w",stdout);
    int i;
    for(i=1;i<=n;i++)
        printf("%i ",dist[i]);
}
int main(){
    cit();
    bfs();
    afis();
    return 0;
}