Pagini recente » Cod sursa (job #3361614) | Cod sursa (job #3361343) | Cod sursa (job #3361319) | Cod sursa (job #3360900) | Cod sursa (job #3361243)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
vector<vector<int>> graph;
vector<bool> visited;
vector<int> dist;
void bfs(int start)
{
queue<int> q; q.push(start);
dist[start]=0; visited[start]=true;
while(!q.empty())
{
int node=q.front(); q.pop();
for(int neighbor:graph[node])
{
if(visited[neighbor]) continue;
if(dist[neighbor]==INT_MAX)
{
dist[neighbor]=dist[node]+1;
visited[neighbor]=true;
q.push(neighbor);
}
}
}
}
int main()
{
int n,m,s; cin>>n>>m>>s;
graph.resize(n+1,vector<int>());
visited.resize(n+1,false);
dist.resize(n+1,INT_MAX);
for(int i=1;i<=m;i++)
{
int x,y; cin>>x>>y;
graph[x].push_back(y);
}
bfs(s);
for(int i=1;i<=n;i++)
{
if(dist[i]==INT_MAX) cout<<-1<<" ";
else cout<<dist[i]<<" ";
}
return 0;
}