Pagini recente » Cod sursa (job #2492173) | Monitorul de evaluare | Cod sursa (job #2657415) | Cod sursa (job #966700) | Cod sursa (job #1705356)
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;
class Main {
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);
}
}