Cod sursa(job #3040589)

Utilizator MedenMeden Meden Meden Data 30 martie 2023 10:03:13
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in"); // conex si m=n-1
ofstream fout ("bfs.out");
int a[1001][1001];
int n,m,start,x,y;

int vizite[100001],orase[100001],distanta[100001];
void BFS(int start){
    
    int st=1,dr=1;
    vizite[start]=1;
    distanta[start]=0;
    orase[dr]=start;
    while(st<=dr){
        int city=orase[st];
        for(int i=1;i<=n;i++){
            if (vizite[i]==0 && a[city][i]==1){
                vizite[i]=1;
                dr++;
                orase[dr]=i;
                distanta[i]=distanta[city]+1;//adaug 1 la fiecare adiacenta 
            }
        }
        st++;
    }
}
int main()
{
    
    fin>>n>>m>>start;
    while(fin>>x>>y){
        a[x][y]=1;
    }
    for(int i=1;i<=n;++i){
        distanta[i]=-1;
    }
    BFS(start);//incepem de la primul nod
    for(int i=1;i<=n;++i){
        fout<<distanta[i]<<" ";
    }
    
    


    return 0;
}