Pagini recente » Cod sursa (job #2674912) | Cod sursa (job #3165800) | Cod sursa (job #2189895) | Cod sursa (job #2413842) | Cod sursa (job #1329320)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <string.h>
#include <algorithm>
#define inf 1<<31 -1
#define nmax 100001
using namespace std;
vector <int> vecin[nmax];
int cost [nmax], urmator, m,n,s,i,x,y;
queue <int> q;
void bfs()
{
while (!q.empty())
{
int curent=q.front();
q.pop();
for (i=0;i<vecin[curent].size();i++)
{
urmator=vecin[curent][i];
if (cost[urmator] == inf)
{
cost[urmator]=cost[curent]+1;
q.push(urmator);
}
}
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>s;
for (i=1;i<=m;i++)
{
f>>x>>y;
vecin[x].push_back(y);
}
for (i=1;i<=n;i++)
cost[i]=inf;
cost[s]=0;
q.push(s);
bfs();
for (i=1;i<=n;i++)
{
if(cost[i]==inf) cost[i]=-1;
g<<cost[i]<<" ";
}
return 0;
}