Pagini recente » Cod sursa (job #1888347) | Cod sursa (job #3030949) | Cod sursa (job #3208134) | Cod sursa (job #11984) | Cod sursa (job #2796688)
#include<bits/stdc++.h>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector<int> adjList[100001];
vector<int> dist;
vector<int> visit;
queue<int> q;
int distanta=0;
void BFS(int x){
int i;
q.push(x);
if(visit[x-1]==0){
dist[x-1]=distanta;
visit[x-1]++;
distanta++;
}
//g<<x<<' ';
while(!q.empty()){
int first=q.front();
//int ok=0;
q.pop();
for(i=0;i<adjList[first].size();++i){
if(visit[adjList[first][i]-1]==0){
visit[adjList[first][i]-1]++;
dist[adjList[first][i]-1]=dist[first-1]+1;
q.push(adjList[first][i]);
// ok=1;
// g<<adjList[first][i]<<' ';
}
}
//if(ok==1)
// distanta++;
//ok=0;
}
}
int main(){
int n,m,s,a,b;
f>>n>>m>>s;
int i;
for(i=0;i<n;++i){
visit.push_back(0);
dist.push_back(0);
}
for(i=0;i<m;++i){
f>>a>>b;
adjList[a].push_back(b);
}
BFS(s);
for(i=0;i<n;++i){
if(visit[i]==0){
dist[i]=-1;
}
}
for(i=0;i<n;++i)
g<<dist[i]<<' ';
return 0;
}