Pagini recente » Monitorul de evaluare | Cod sursa (job #1226009) | Cod sursa (job #1522278) | Profil ni2mc | Cod sursa (job #1522317)
#include <cstdio>
#include <vector>
#include <queue>
#define NMax 100005
using namespace std;
vector<int> G[NMax];
queue<int> Q;
int N, M, S, i, a, b, viz[NMax], D[NMax], varf;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d\n",&N,&M,&S);
for(i=1;i<=M;i++)
{
scanf("%d %d\n",&a,&b);
G[a].push_back(b);
}
for(i=1;i<=N;i++)
D[i]=-1;
D[S]=0;
viz[S]=1;
Q.push(S);
while(!Q.empty())
{
varf=Q.front();
Q.pop();
for(vector<int>::iterator it=G[varf].begin(); it!=G[varf].end(); ++it)
if(!viz[*it])
{
D[*it]=D[varf]+1;
viz[*it]=1;
Q.push(*it);
}
}
for(i=1;i<=N;i++)
printf("%d ",D[i]);
return 0;
}