Pagini recente » Cod sursa (job #1018532) | Cod sursa (job #187427) | Cod sursa (job #1061444) | Profil georgiana_samoila | Cod sursa (job #854580)
Cod sursa(job #854580)
//BFS
using namespace std;
#include <fstream>
#include <vector>
#include <deque>
#define MAXN 100001
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> vecini[MAXN];
int cost[MAXN];
int N,M,S,x,y;
void BFS(int nod)
{int i;
vector<int>::iterator it;
deque <int> coada;
for (i=1;i<=N;i++) cost[i]=-1;
coada.push_back(nod);
cost[nod]=0;
while (!coada.empty())
{
for (it=vecini[nod].begin();it!=vecini[nod].end();++it)
if (cost[*it]==-1)
{
coada.push_back(*it);
cost[*it]=cost[coada.front()] + 1;
}
coada.pop_front();
nod=coada.front();
}
}
int main()
{
int i;
f>>N>>M>>S;
for (i=0;i<M;++i)
{
f>>x>>y;
vecini[x].push_back(y);
}
BFS(S);
for (i=1;i<=N;i++)
g<<cost[i]<<" ";
return 0;
}