Pagini recente » Cod sursa (job #2053295) | Cod sursa (job #1586852) | Cod sursa (job #834390) | Cod sursa (job #547730) | Cod sursa (job #1655024)
#include <queue>
#include <vector>
#include <unordered_map>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int T,N,M,x,y,S,current;
vector<vector<int>> nodes;
bool visited[100005];
int distances[100005];
queue<int> myQueue;
int main() {
// freopen("bfs.in","r",stdin);
// freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
nodes = vector<vector<int>>(N+1);
memset(visited,0,(N+1)*4);
memset(distances,-1,(N+1)*4);
for (int j=0;j<M;++j) scanf("%d%d",&x,&y), nodes[x].push_back(y);
myQueue.push(S);
distances[S] = 0;
while(!myQueue.empty()){
current = myQueue.front();
visited[current] = true;
myQueue.pop();
for (int z=0;z<nodes[current].size();z++){
if (!visited[nodes[current][z]]){
visited[nodes[current][z]] = true;
distances[nodes[current][z]] = distances[current]+1;
myQueue.push(nodes[current][z]);
}
}
}
// freopen(i+"out.txt","w",stdout);
for (int j=1;j<S;++j) printf("%d ",distances[j]);
for (int j=S;j<=N;++j) printf("%d ",distances[j]);
printf("\n");
return 0;
}