Pagini recente » Cod sursa (job #1368321) | Cod sursa (job #1628630) | Cod sursa (job #886467) | Cod sursa (job #1908839) | Cod sursa (job #933117)
Cod sursa(job #933117)
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
#define NMAX 100020
int N,M,S;
int A[NMAX];
bool used[NMAX];
vector < int > G[NMAX];
vector < int > :: iterator it;
deque < int > D;
void Read() {
freopen("bfs.in","r",stdin);
int i,x,y;
scanf("%d%d%d",&N,&M,&S);
for(i=1;i<=M;i++) {
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
}
void BFS() {
int nod;
D.push_back(S);
used[S]=true;
while(!D.empty()) {
nod=D.front();
D.pop_front();
for(it=G[nod].begin();it!=G[nod].end();++it) {
if(used[*it])
continue;
used[*it]=true;
D.push_back(*it);
A[*it]=A[nod]+1;
}
}
}
void Print() {
freopen("bfs.out","w",stdout);
for(int i=1;i<=N;i++) {
if(A[i]==0 && i!=S)
printf("-1 ");
else
printf("%d ",A[i]);
}
printf("\n");
}
int main() {
Read();
BFS();
Print();
return 0;
}