Pagini recente » Cod sursa (job #1908805) | Cod sursa (job #2667836) | Cod sursa (job #1409345) | Cod sursa (job #1394336) | Cod sursa (job #2789155)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
int n, m, s; //s e nod initial, v e nodul curent, primul din coada
bool vizitat[100005];
int dist[100005];
vector <int>l[100005];
queue <int>q;
ifstream in("bfs.in");
ofstream out("bfs.out");
void citire()
{
in>>n>>m>>s;
int x,y,i;
for(int i =0; i<m; i++)
{
in>>x>>y;
l[x].push_back(y);
}
}
void bfs(int s)
{
int v,i,y;
q.push(s);
vizitat[s] = 1;
dist[s]=0;
while(!q.empty())
{
v=q.front();
for(auto el:l[v])
{
if(vizitat[el]==0)
{
q.push(el);
vizitat[el]=1;
dist[el]=dist[v]+1;
}
}
q.pop();
}
}
int main()
{
citire();
for(int i =1; i<=n; i++)
{
dist[i]=-1;
}
bfs(s);
for(int i = 1; i<=n; i++)
{
out << dist[i]<<' ';
}
return 0;
}