Pagini recente » Cod sursa (job #2853402) | Cod sursa (job #266132) | Cod sursa (job #3263680) | Cod sursa (job #565342) | Cod sursa (job #2554179)
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int nmax = 100004;
vector<int>adj[nmax];
int n,s;
int dist[nmax];
inline void citire()
{
int m;
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%d%d",&x,&y);
adj[x].push_back(y);
}
for(int i=1;i<=n;i++) dist[i]=-1;
}
inline void bfs()
{
queue<int>myq;
dist[s] = 0;
myq.push(s);
while(!myq.empty())
{
int nod = myq.front();
myq.pop();
for(vector<int>::iterator it=adj[nod].begin();it!=adj[nod].end();++it)
{
if(dist[*it] == -1 || dist[*it] > dist[nod]+1)
{
dist[*it] = dist[nod]+1;
myq.push(*it);
}
}
}
for(int i=1;i<=n;i++) printf("%d ", dist[i]);
}
int main()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
citire();
bfs();
return 0;
}