Pagini recente » Cod sursa (job #761782) | Cod sursa (job #2189382) | Cod sursa (job #2813179) | Cod sursa (job #2662050) | Cod sursa (job #2407003)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int maxN=1e5+1;
const int INF=(1<<30);
int n,m,source;
vector<int> v[maxN];
bool vis[maxN];
int dist[maxN];
int main(){
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>source;
for(int i=1;i<=m;i++){
int x,y;
f>>x>>y;
v[x].push_back(y);
}
for(int i=1;i<=n;i++){
dist[i]=INF;
}
queue<int> Que;
dist[source]=0;
vis[source]=true;
Que.push(source);
while(!Que.empty()){
int nod=Que.front();
Que.pop();
for(auto it:v[nod])
if(!vis[it]){
dist[it]=dist[nod]+1;
vis[it]=true;
Que.push(it);
}
}
for(int i=1;i<=n;i++){
if(dist[i]==INF){
g<<-1<<" ";
} else {
g<<dist[i]<<" ";
}
}
return 0;
}