Pagini recente » Cod sursa (job #884207) | Cod sursa (job #190671) | Cod sursa (job #461583) | Cod sursa (job #2988268) | Cod sursa (job #1572722)
#include <fstream>
#include <vector>
#include <queue>
#define Nmax 100010
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> A[Nmax];
queue <int> coada;
int n,m,s,x,y,cost[Nmax],i,j;
void BFS(int s)
{
int p;
for(i=1; i<=n; i++)
cost[i]=-1;
coada.push(s);
cost[s]=0;
while(coada.empty()==0)
{
p=coada.front();
for(i=0; i<A[p].size(); i++)
if(cost[A[p][i]]==-1)
{
coada.push(A[p][i]);
cost[A[p][i]]=cost[p]+1;
}
coada.pop();
}
}
int main()
{
f>>n>>m>>s;
for(i=1; i<=m; i++)
{
f>>x>>y;
A[x].push_back(y);
}
BFS(s);
for(i=1; i<=n; i++)
g<<cost[i]<<' ';
return 0;
}