Pagini recente » Cod sursa (job #359362) | Cod sursa (job #1242832) | Cod sursa (job #285712) | Cod sursa (job #1494469) | Cod sursa (job #3206374)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,s;
int d[100005];
vector <int> g[100005];
struct el
{
int nod;
int lg;
};
queue <el> q;
void read()
{
fin>>n>>m>>s;
int x,y;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
g[x].push_back(y);
}
}
void bfs(int sursa)
{
q.push({sursa,0});
while(!q.empty())
{
int nod=q.front().nod;
int lg=q.front().lg;
q.pop();
for(auto vecin: g[nod])
{
if(!d[vecin] && vecin!=sursa)
{
d[vecin]=lg+1;
q.push({vecin,lg+1});
}
}
}
for(int i=1;i<=n;i++)
{
if(d[i]==0 && i!=sursa)
fout<<-1<<" ";
else fout<<d[i]<<" ";
}
}
int main()
{
read();
bfs(s);
return 0;
}