Pagini recente » Cod sursa (job #1301083) | Cod sursa (job #2601067) | Cod sursa (job #572789) | Cod sursa (job #2977876) | Cod sursa (job #2853921)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n;
const int nmax=100002;
vector<vector<int>>adj(nmax);
queue<int>q;
int dist[nmax];
void bfs(int node)
{
for(int i=1;i<=n;i++)
dist[i]=1e7;
q.push(node);
dist[node]=0;
while(!q.empty())
{
int node=q.front();
q.pop();
for(int next:adj[node])
{
if(dist[node]+1<=dist[next])
{
dist[next]=dist[node]+1;
q.push(next);
}
}
}
}
int main()
{
int m,s,i;
cin>>n>>m>>s;
for(i=1;i<=m;i++)
{
int u,v;
cin>>u>>v;
adj[u].push_back(v);
}
bfs(s);
for(i=1;i<=n;i++)
{
if(dist[i]==1e7)
cout<<-1<<" ";
else
cout<<dist[i]<<" ";
}
return 0;
}