Cod sursa(job #2784686)

Utilizator Mirc100Mircea Octavian Mirc100 Data 17 octombrie 2021 00:57:26
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <queue>
#include<fstream>
using namespace std;

int d[100000],n,m,s,viz[100000];
vector<int> l[100000];

void citire(const char *nume_fisier, int &n, int &m, int &s, vector<int> l[100000]){
     ifstream f(nume_fisier);
     int x,y,i;
     f>>n>>m>>s;
     s--;
     for(i=0;i<m;i++){
         f>>x>>y;
         l[x-1].push_back(y-1);
     }
     f.close();
}

void bfs(int s){
	int x,i;
    queue<int> c;
    c.push(s);
    d[s]=0;
    viz[s]=1;
    while(c.size()>0){
        x=c.front();
        c.pop();
        for(i=0;i<l[x].size();i++){
			int y=l[x][i];
            if(viz[y]==0){
                c.push( y);
                viz[y]=1;
                d[y]=d[x]+1;
            }
        }
     }
}
int main(){
    int n,m,s,i;
    citire("bfs.in",n,m,s,l);

    for(i=0;i<n;i++)
        d[i]=-1;

	bfs(s);
    ofstream f("bfs.out");

     for(i=0;i<n;i++)
        f<<d[i]<<" ";
     f.close();
     return 0;
}