Pagini recente » Borderou de evaluare (job #1569396) | Cod sursa (job #1670484) | Cod sursa (job #2184721) | Cod sursa (job #3135339) | Cod sursa (job #3173402)
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <vector <int> > gr;
int N;
int M;
int S;
int distanta[NMAX];
void citire()
{
f>>N>>M>>S;
int x;
gr.resize(N+1);
int y;
for (int i=0; i<M; i++)
{
f>>x>>y;
gr[x].push_back(y);
}
}
int main()
{
citire();
queue <int> coada;
coada.push(S);
while(!coada.empty())
{
int x=coada.front();
for(size_t i=0; i<gr[x].size();i++)
{
if(distanta[gr[x][i]]==0 && gr[x][i]!=S)
{
coada.push(gr[x][i]);
distanta[gr[x][i]]=distanta[x]+1;
}
}
coada.pop();
}
for(int i=1; i<N+1; i++)
{
if(distanta[i]==0 && i!=S)
distanta[i]=-1;
g<<distanta[i]<<" ";
}
return 0;
}