Cod sursa(job #1430771)

Utilizator Mertoiu_Alina_Maria_323CAMertoiu Alina-Maria Mertoiu_Alina_Maria_323CA Data 8 mai 2015 19:50:46
Problema BFS - Parcurgere in latime Scor 20
Compilator java Status done
Runda Arhiva educationala Marime 1.58 kb
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;


public class Main {
	
	static int [][] adjMat;
	static int n;
	int m;
	static int [] visited;
	static int [] dist;
	int [][] mat;
	
	public Main(int n, int m){
		this.n = n;
		this.m = m;
		
		adjMat = new int[n+1][n+1];
		visited = new int[n+1];
		dist = new int[n+1];
		mat = new int[n+1][n+1];
	}
	
	static void bfs(int source){
		
		int node;
		visited[source] = 1;
		
		Queue<Integer> q = new LinkedList<Integer>();
		
		q.add(source);
		
		while(!q.isEmpty()){
			node = q.poll();
			visited[node] = 1;
			
			for (int i = 1; i <= n; i++) {
				if(adjMat[node][i] !=0 && visited[i]==0){

					dist[i] = dist[node] + 1;
					q.add(i);
				}
			}
		}
		

		
	}

	public static void main(String[] args) throws IOException {
		
        Scanner in = new Scanner(new FileReader("bfs.in"));
        
        int n =in.nextInt();
         
        int m = in.nextInt();
        
        int source = in.nextInt();

       
       Main main = new Main(n, m);
        
        for (int i = 0; i < m; i++) {
        	int x,y;
        	x = in.nextInt();
        	y = in.nextInt();

			adjMat[x][y] = 1;
		}  
        in.close();
        
        bfs(source);
         
        BufferedWriter out = new BufferedWriter(new FileWriter("bfs.out"));
		for (int i = 1; i <= n; i++) {
			if (visited[i] == 0)
				out.append(-1 + " ");
			else 
			out.append(dist[i]+ " ");
		}
        out.close();
		
	}
	
}