Pagini recente » Cod sursa (job #1624300) | Cod sursa (job #1546033) | Cod sursa (job #824875) | Cod sursa (job #1287329) | Cod sursa (job #3127429)
#include <fstream>
#include <queue>
using namespace std;
vector<int> v[100005];
ifstream cin("bfs.in");
ofstream cout("bfs.out");
void bfs(int n,int st)
{
bool vis[n+5];
int dist[n+5];
for(int i=1;i<=n;i++)
{
vis[i]=0;
dist[i]=-1;
}
queue<int> q;
q.push(st);
vis[st]=1;
dist[st]=0;
while(!q.empty())
{
int t=q.front();
for(auto x : v[t])
{
if(vis[x]==0)
{
q.push(x);
dist[x]=dist[t]+1;
vis[x]=1;
}
}
//vis[t]=1;
q.pop();
}
for(int i=1;i<=n;i++)
cout << dist[i] << " ";
}
int main()
{
int n,m,st,x,y;
cin >> n >> m >> st;
for(int i=0;i<m;i++)
{
cin >> x >> y;
v[x].push_back(y);
}
bfs(n,st);
return 0;
}