Pagini recente » Cod sursa (job #1159016) | Cod sursa (job #2425071) | Cod sursa (job #1979878) | Cod sursa (job #1119156) | Cod sursa (job #1655009)
#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[1005];
int distances[1005];
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), nodes[y].push_back(x);
myQueue.push(S);
distances[S] = 0;
while(!myQueue.empty()){
current = myQueue.front();
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]+6;
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+1;j<=N;++j) printf("%d ",distances[j]);
printf("\n");
return 0;
}