Cod sursa(job #1510582)

Utilizator AdrianGotcaAdrian Gotca AdrianGotca Data 25 octombrie 2015 12:39:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <vector>

using namespace std;

FILE *f=freopen("bfs.in","r",stdin);
FILE *g=freopen("bfs.out","w",stdout);

vector <int> G[100001];
int n,m,nod,c[100001];
int viz[100001];
void read();
void BFS(int);
void write();
int main(){
    read();
    write();
    return 0;
}

void read(){
    int x=0,y=0;
    scanf("%d%d%d",&n,&m,&nod);
    for (int i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
    }
    BFS(nod);
}

void BFS(int x){
    int p=1,u=1;
    c[p]=x;
    viz[x]=1;
    for (int j=1;j<=u;j++){
        int y=c[j];
        for (int i=0;i<G[y].size();i++){
            int z=G[y][i];
            if (!viz[z]){
                viz[z]=viz[y]+1;
                c[++u]=z;
            }
        }
    }
}

void write(){
    for (int i=1;i<=n;i++){
        printf("%d ",viz[i]-1);
    }
}