Pagini recente » Cod sursa (job #677179) | Cod sursa (job #2789318) | Cod sursa (job #620522) | Cod sursa (job #2968741) | Cod sursa (job #3031147)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,visited[2000001]={0},val[2000001]={0},cnt = 0;
vector<vector<int>> l(2000001);
queue<int> q;
void dfs(int x){
visited[x] = 1;
for (const auto &item: l[x]) {
if(visited[item]==0){
dfs(item);
}
}
}
void bfs(int x){
q.push(x);
visited[x] = 1;
val[x]=0;
while(!q.empty())
{
int k = q.front();
q.pop();
for (const auto &item: l[k]) {
if(visited[item] == 0){
val[item] = val[k]+1;
visited[item]=1;
q.push(item);
}
}
}
}
int main(){
int k;
fin>>n>>m>>k;
for(int i = 1;i<=m;i++){
int x,y;
fin>>x>>y;
l[x].push_back(y);
}
bfs(k);
for (int i =1;i<=n;i++) {
if(val[i]==0 && i!=k)
fout<<-1<<" ";
else
fout<<val[i]<<" ";
}
}