Pagini recente » Cod sursa (job #801694) | Cod sursa (job #1018354) | Rating HumeniucDanStefan (humeniucDanStefan) | Cod sursa (job #1183697) | Cod sursa (job #3153588)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <deque>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,p;
vector<int> gr[100001];
bool viz[100001];
int dis[100001];
deque<int> q;
void BFS()
{
q.push_back(p);
viz[p] = 1;
while(!q.empty())
{
int i;
int nod = q.front();
q.pop_front();
for(i=0;i<gr[nod].size();i++)
{
if(viz[gr[nod][i]]==0)
{
viz[gr[nod][i]] = 1;
dis[gr[nod][i]] = dis[nod]+1;
q.push_back(gr[nod][i]);
}
}
}
}
void afis()
{
int i;
for(i=1;i<=n;i++)
{
if(dis[i]==0 && i!=p)
fout<<-1<<" ";
else fout<<dis[i]<<" ";
}
}
int main()
{
int x,y,i;
fin>>n>>m>>p;
for(i=1;i<=m;i++)
{
fin>>x>>y;
gr[x].push_back(y);
}
BFS();
afis();
}