Pagini recente » Cod sursa (job #641511) | Cod sursa (job #1695662) | Cod sursa (job #2181550) | Cod sursa (job #23130) | Cod sursa (job #2397010)
#include <bits/stdc++.h>
#define pb push_back
#define NMAX 100005
using namespace std;
struct nod{
vector<int> adj;
};
vector<nod> v;
int n,m,s,x,y;
bitset<NMAX> viz;
void BFS(int root)
{
queue<int> q;
int nod,dist[NMAX],w;
for (int i=1;i<=n;i++)
{
dist[i]=-1;
}
q.push(root);
dist[root]=0;
viz[root]=1;
while (!q.empty())
{
nod=q.front();
q.pop();
for (unsigned int i=0;i<v[nod].adj.size();i++)
{
w=v[nod].adj[i];
if (!viz[w])
{
dist[w]=dist[nod]+1;
viz[w]=1;
q.push(w);
}
}
}
for (int i=1;i<=n;i++)
{
printf("%d ", dist[i]);
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d", &n, &m, &s);
v.resize(n+2);
for (int i=0;i<m;i++)
{
scanf("%d %d", &x, &y);
v[x].adj.pb(y);
}
BFS(s);
fclose(stdin);
fclose(stdout);
return 0;
}