Pagini recente » Cod sursa (job #671922) | Cod sursa (job #2803841) | Cod sursa (job #2944727) | Cod sursa (job #1969872) | Cod sursa (job #633803)
Cod sursa(job #633803)
#include<fstream>
#include<vector>
#include<queue>
#define NMax 100005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int N, S, L[NMax], viz[NMax];
vector <int> G[NMax];
queue <int> Q;
void Read()
{int M,X,Y;
in>>N>>M>>S;
for( ;M>0;--M)
{
in>>X>>Y;
G[X].push_back(Y);
}
}
void BFS(int Start)
{ int prec;
Q.push(Start);
viz[Start]=1;
while(!Q.empty())
{
prec=Q.front();
Q.pop();
viz[prec]=1;
for(unsigned v=0; v<G[prec].size(); v++)
{
int V=G[prec][v];
if(!viz[V])
{
viz[V]=1;
L[V]=L[prec]+1;
Q.push(V);
}
}
}
}
void Print()
{
for(int i=1;i<=N;i++)
{
if(!viz[i])
L[i]=-1;
out<<L[i]<<" ";
}
}
int main()
{ Read();
BFS(S);
Print();
}