Cod sursa(job #1464515)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 23 iulie 2015 18:32:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
vector<int> g[100010];
int dist[100010],coada[100010];
int main(){
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    int n,m,s,ic=1,sf=1,dim,nod,i,a,b;
    scanf("%d%d%d",&n,&m,&s);
    for(i=1;i<=m;i++){
        scanf("%d%d",&a,&b);
        g[a].push_back(b);
    }
    memset(dist,-1,sizeof(dist));
    coada[1]=s;
    dist[s]=0;
    while(ic<=sf){
        nod=coada[ic];
        dim=g[nod].size();
        for(i=0;i<dim;i++)
            if(dist[g[nod][i]]==-1){
                dist[g[nod][i]]=dist[nod]+1;
                sf++;
                coada[sf]=g[nod][i];
            }
        ic++;
    }
    for(i=1;i<=n;i++)
        printf("%d ",dist[i]);
    return 0;
}