Cod sursa(job #2432183)

Utilizator lucian2015blaugranadevil lucian2015 Data 22 iunie 2019 14:24:26
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
#include <vector>
#include <queue>

#define nmax 100005
using namespace std;


ifstream f("bfs.in");
ofstream g("bfs.out");


class graf{
private:
	vector<int> edges[nmax];
	vector<bool> visited;
	int nodes=0;
public:
	graf(int n){
        nodes=n;
        visited.resize(n,0);
	}
	void addedge(int x,int y){
		edges[x].push_back(y);
	}
   void bfs(int sursa){
   		vector<int> dist(nodes+1,-1);
   		queue<int> coada;
        int i, nod;
   		visited[sursa]=1;
   		dist[sursa]=0;
   		coada.push(sursa);
   		while(!coada.empty()){
   			nod=coada.front();
   			coada.pop();
         for(i=0;i<edges[nod].size();i++){
            if(visited[edges[nod][i]]==0){
            	visited[edges[nod][i]]=1;
            	dist[edges[nod][i]]=dist[nod]+1;
            	coada.push(edges[nod][i]);
            }
         }
       }
       for(i=1;i<=nodes;i++)
         if(!visited[i])
           dist[i]=-1;
       for(i=1;i<=dist.size();i++){
       		g<<dist[i]<<" ";
       }
 }
};



int main(){
	int n, m, x, y, sursa, i;
	f>>n>>m>>sursa;
  graf graph(n);
	for(i=0;i<m;i++){
		f>>x>>y;
		graph.addedge(x,y);
	}
 graph.bfs(sursa);

}