Pagini recente » Cod sursa (job #1873367) | Cod sursa (job #1185722) | Cod sursa (job #1774384) | Cod sursa (job #742625) | Cod sursa (job #876045)
Cod sursa(job #876045)
//============================================================================
// Name : bfs.cpp
// Author :
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
//http://infoarena.ro/problema/bfs
//Se considera un graf orientat cu N varfuri si M arce
#include <iostream>
#include <fstream>
#include <string>
#include <queue>
#include <vector>
#include <map>
#include <cstdio>
using namespace std;
queue<pair<int,int> > q;
map<int , vector<int> > graf;
int dist[100000] = {-1};
int vizitat[100000]= {0};
void bfs(){
if(!q.empty()){
pair<int, int> node = q.front();
q.pop();
dist[node.first] = node.second;
vizitat[node.first] = true;
for(unsigned int i = 0; i < graf[node.first].size(); ++i){
if(!vizitat[graf[node.first].at(i)])
q.push(pair<int,int>(graf[node.first].at(i), node.second +1));
}
bfs();
}
}
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
//read from file bfs.in //
std::fill_n(dist, 100000,-1);
std::fill_n(vizitat, 100000,0);
freopen("bfs.in", "r", stdin);
freopen("bfs.txt", "w", stdout);
int N,M,s;
cin >> N >>M >> s;
for(int i = 0; i < M; ++i){
int n1, n2;
cin >> n1 >> n2;
graf[n1].push_back(n2);
}
q.push(pair<int,int>(s,0));
bfs();
ofstream outfile("bfs.out");
for(int i =1; i <= N; ++i)
cout << dist[i] << " ";
return 0;
}