Pagini recente » Cod sursa (job #1298010) | Cod sursa (job #2255258) | Cod sursa (job #2433792) | Cod sursa (job #441425) | Cod sursa (job #2425756)
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <fstream>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> v[NMAX];
queue <int> coada;
int n,m,x,s,i,y1,y2,dist[NMAX],vecin;
void read()
{
f>>n>>m>>x;
for (i=0;i<m;i++)
{f>>y1>>y2;
v[y1].push_back(y2);
}
}
void bfs(int start)
{ coada.push(start);
for (i=1;i<=n;i++)
dist[i]=-1;
dist[start]=0;
while (!coada.empty())
{int nod=coada.front();
coada.pop();
for (i=0;i<v[nod].size();i++)
{vecin=v[nod][i];
if (dist[vecin]==-1)
{
dist[vecin]=dist[nod]+1;
coada.push(vecin);
}
}
}
}
void display()
{ for (i=1;i<=n;i++)
g<<dist[i]<<" ";
}
int main()
{
read();
bfs(x);
display();
return 0;
}