Pagini recente » Romanii la DisneyWorld - partea a treia | Solutii ONIS 2014, Runda 2 | Cod sursa (job #1195787) | Cod sursa (job #1714804) | Cod sursa (job #2280692)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
int n,m,s;
vector <int> muchii[NMAX];
queue <int> coada;
bool vizitat[NMAX];
int dist[NMAX];
void BFS(int x)
{
coada.emplace(x);
vizitat[x]=true;
dist[x]=1;
int nod_coada,nod_curent;
while(!coada.empty()){
nod_coada=coada.front();
coada.pop();
for(auto i=muchii[nod_coada].begin();i!=muchii[nod_coada].end();i++){
nod_curent=*i;
if(!vizitat[nod_curent]){
vizitat[nod_curent]=true;
dist[nod_curent]=dist[nod_coada]+1;
coada.push(nod_curent);
}
}
}
}
int main()
{
int i,x,y;
in>>n>>m>>s;
for(i=1;i<=m;i++){
in>>x>>y;
muchii[x].emplace_back(y);
}
BFS(s);
for(i=1;i<=n;i++){
out<<dist[i]-1<<' ';
}
return 0;
}