Pagini recente » Cod sursa (job #2979339) | Cod sursa (job #425201) | Cod sursa (job #2696515) | Cod sursa (job #2622710) | Cod sursa (job #2662335)
#include <iostream>
#include <deque>
#include <list>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
void bfs(int start, int c[], vector < list<int>> ad, vector<int> paths,int n)
{
int S=1, L=1;
while(S<=L)
{
int parent = c[S];
for(auto &i: ad[parent])
{
if( paths[i] == -1)
{
paths[i] = paths[parent] + 1;
c[++L] = i;
}
}
S++;
}
for(int i = 1; i<=n; i++)
fout<<paths[i]<<" ";
}
int main()
{
int n,m,start;
fin>>n>>m>>start;
vector <list <int>> ad(n+1);
for(int i = 0; i < m; i ++)
{
int x,y;
fin >> x >> y;
ad[x].push_back(y);
}
vector <int> paths(n+1,-1);
paths[start] = 0;
int c[n+1];
c[1] = start;
bfs(start,c,ad,paths,n);
return 0;
}