Pagini recente » Cod sursa (job #2559273) | Cod sursa (job #1960706) | Cod sursa (job #46888) | Cod sursa (job #915405) | Cod sursa (job #640345)
Cod sursa(job #640345)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100002
#define oo (1<<30)
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<int> V[NMAX];
vector<int>::iterator it,sf;
queue<int> Q;
int D[NMAX],M,N,S;
inline int _min(int a,int b){if(a<b)return a;return b;}
int main()
{
int x,y;
in>>N>>M>>S;
while(M--)
{
in>>x>>y;
V[x].push_back(y);
}
fill(D+1,D+N+1,oo);
for(Q.push(S),D[S]=0;!Q.empty();Q.pop())
{
x = Q.front();
for(it=V[x].begin(),sf=V[x].end();it<sf;++it)
{
y = *it;
if(D[y]>D[x]+1)
{
D[y] = D[x]+1;
Q.push(y);
}
}
}
for(x=1;x<=N;x++)
out<<(D[x]==oo?-1:D[x])<<' ';
return 0;
}