Pagini recente » Cod sursa (job #702074) | Cod sursa (job #1924553) | Cod sursa (job #1287896) | Cod sursa (job #1386182) | Cod sursa (job #2602775)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nodd
{
bool vizitat;
vector <int> vecini;
} nod[NMAX],curr;
queue <int> coada;
int dist[NMAX],n,m,s;
int main()
{
int i,a,b;
fin>>n>>m>>s;
for(i=1; i<=n; i++)
dist[i]=-1;
for(i=1; i<=m; i++)
{
fin>>a>>b;
nod[a].vecini.push_back(b);
}
coada.push(s);
nod[s].vizitat=1;
dist[s]=0;
while(!coada.empty())
{
curr=nod[coada.front()];
for(i=0; i!=curr.vecini.size() ; i++)
if(nod[curr.vecini[i]].vizitat==0)
{
nod[curr.vecini[i]].vizitat=1;
coada.push(curr.vecini[i]);
dist[curr.vecini[i]]=dist[coada.front()]+1;
}
coada.pop();
}
for(i=1; i<=n; i++)
fout<<dist[i]<<' ';
return 0;
}