Cod sursa(job #1705352)

Utilizator Radu173Piersicanu Radu Radu173 Data 20 mai 2016 12:50:16
Problema BFS - Parcurgere in latime Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.66 kb


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

public class test {

	public static class Graph {

		ArrayList<ArrayList<Integer>> g = new ArrayList<ArrayList<Integer>>();
		int s;
		
		public void read(String FileName) throws IOException{
			BufferedReader reader = null;

			File file = new File(FileName);
			reader = new BufferedReader(new FileReader(file));
			
			String line = reader.readLine();
			int n,m;
			
			String num[] = line.split(" ");
			n = Integer.valueOf(num[0]);
			m = Integer.valueOf(num[1]);
			s = Integer.valueOf(num[2])-1;
			
			for( int i = 0 ; i < n ; i++ ) 
				g.add(new ArrayList<Integer>());
			
			for( int i = 0 ; i < m ; i++) {
				line = reader.readLine();
				num = line.split(" ");
				
				g.get(Integer.valueOf(num[0])-1).add(Integer.valueOf(num[1])-1);
			}
			
			reader.close();
		}
		
	}

	
	public static void bfs( ArrayList<ArrayList<Integer>> g, int s) {
		
		int[] sol = new int[g.size()];
		for( int i = 0 ; i < g.size() ; i++ ) 
			sol[i] = -1;
		
		Queue<Integer> q = new LinkedList<>();
		q.add(s);
		sol[s]++;
		while( !q.isEmpty() ){
			s = q.remove();
			
			for( Integer e : g.get(s) ) {
				if( sol[e] == -1 ) { 
					q.add(e);
					sol[e] = sol[s]+1;
				}
			}
		}
		for( int i = 0 ; i < g.size() ; i++ )
			System.out.print(sol[i] + " ");
		
	}
	
	
	public static void main(String[] argv) throws IOException{
		
		Graph graph = new Graph();
		
		graph.read("bfs.in");
		
		bfs( graph.g, graph.s);
		
	}
	
	
}