Pagini recente » Rating Adina Mateescu (smallOne) | Monitorul de evaluare | Stapanu tau | Junior Challenge 2012 | Cod sursa (job #3294676)
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<vector<int>>g;
int n,m,x,i;
int dist[100001];
int main()
{
cin>>n>>m>>x;
g.resize(n+1,vector<int>());
for(i=1; i<=m; i++)
{
int x,y;
cin>>x>>y;
g[x].push_back(y);
}
for(int i=1; i<=n; i++)
dist[i]=-1;
queue<int>q;
dist[x] = 0;
q.push(x);
while(!q.empty())
{
int node = q.front();
q.pop();
for(int h = 0;h<g[node].size();h++)
{
if(dist[g[node][h]] == -1)
{
dist[g[node][h]] = dist[node]+1;
q.push(g[node][h]);
}
}
}
for(int i=1; i<=n; i++)
cout<<dist[i]<<" ";
return 0;
}