Pagini recente » Cod sursa (job #1443723) | Cod sursa (job #1039420) | Cod sursa (job #2305353) | Cod sursa (job #79637) | Cod sursa (job #2559512)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
const int NMAX = 100005;
const int INF = (int)1e18;
vector <int> X[NMAX];
queue <int> Q;
int N,M;
int NodStart;
bool Viz[NMAX];
int D[NMAX];
void BFS()
{
D[NodStart]=0;
Viz[NodStart]=1;
Q.push(NodStart);
while(!Q.empty()){
int Curent=Q.front();
Q.pop();
for(unsigned int i=0;i<X[Curent].size();i++){
int Vecin=X[Curent][i];
if(!Viz[Vecin]){
D[Vecin]=D[Curent]+1;
Viz[Vecin]=1;
Q.push(Vecin);
}
}
}
}
int main()
{
f>>N>>M>>NodStart;
while(M){
int i,j;
f>>i>>j;
X[i].push_back(j);
M--;
}
for(int i=1;i<=N;i++){
D[i]=INF;
}
BFS();
for(int i=1;i<=N;i++){
if(D[i]==INF){
g<<-1<<" ";
}else{
g<<D[i]<<" ";
}
}
f.close();
g.close();
return 0;
}