Cod sursa(job #1655009)

Utilizator dimavascan94VascanDumitru dimavascan94 Data 17 martie 2016 17:44:56
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#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;
}