Pagini recente » Cod sursa (job #1047883) | Cod sursa (job #2596663) | Cod sursa (job #642837) | Cod sursa (job #1631780) | Cod sursa (job #1725717)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue<unsigned int> Conex[100001];
int sursa;
int nrNoduri;
int nrMuchii;
bool viz[100001];
unsigned int cost[100001];///costul minim ca sa ajungi intr-un nod
void citire()
{
f>>nrNoduri;
f>>nrMuchii;
f>>sursa;
int i;
int a,b;
for(i=1;i<=nrMuchii;i++)
{
f>>a>>b;
Conex[a].push(b);
}
}
void bfs(int nod,int val)
{
while(!Conex[nod].empty())
{
int x= Conex[nod].front();
if((viz[x]==false)||(viz[x]==true && cost[x]>val))
{
viz[x]=true;
cost[x]=val;
bfs(x,val+1);
}
Conex[nod].pop();
}
}
void afisare()
{
int i;
for(i=1;i<=nrNoduri;i++)
if(viz[i]==true)
g<<cost[i]<<' ';
else
g<<"-1"<<' ';
}
int main()
{
citire();
viz[sursa]=true;
bfs(sursa,1);
afisare();
f.close();
g.close();
return 0;
}