Cod sursa(job #1696563)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 29 aprilie 2016 13:55:52
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define N 1010

using namespace std;

int parc[N];
int muc[N][N];
int dist[N];
int que[N],head,tail;

int deq(){
    return que[tail++];
}
void enq(int x){
    que[head++]=x;
}



int main(){
    int i,n,m,s;
    int x,y,c;

    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    scanf("%d%d%d",&n,&m,&s);

    for(i=0;i<m;i++){
        scanf("%d%d",&x,&y);
        muc[x][y]=1;
    }

    enq(s);
    parc[s]=1;
    while(tail<head){
        c=deq();

        for(i=1;i<=n;i++){
            if(parc[i]==0 && muc[c][i]){
                enq(i);
                dist[i]=dist[c]+1;
                parc[i]=1;
            }

        }
    }

    for(i=1;i<=n;i++){
        if(dist[i]==0 && i!=s){
            dist[i]=-1;
        }
        printf("%d ",dist[i]);
    }


    return 0;
}