Pagini recente » Cod sursa (job #960227) | Cod sursa (job #515995) | Cod sursa (job #2798453) | Cod sursa (job #2383611) | Cod sursa (job #3216308)
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
unsigned int n,m,s;
const int nmax=100000;
int cost[nmax+5];
vector <int> v[nmax+5];
queue <int> Q;
void read()
{
fin>>n>>m>>s;
int i,j;
while(m--)
{
fin>>i>>j;
v[i].push_back(j);
}
}
void bfs()
{
Q.push(s);
cost[s]=0;
while(!Q.empty())
{
int nod=Q.front();
for(int i=0;i<v[nod].size();i++)
{
int vecin=v[nod][i];
if(cost[vecin]==-1)
{
cost[vecin]=cost[nod]+1;
Q.push(vecin);
}
}
Q.pop();
}
}
void solve()
{
for(int i=1;i<=n;i++)
fout<<cost[i]<<" ";
}
void init()
{
for(int i=1;i<=n;i++)
cost[i]=-1;
}
int main()
{
read();
init();
bfs();
solve();
}