Pagini recente » Cod sursa (job #2819163) | Cod sursa (job #2679593)
import java.util.*;
import java.io.*;
public class Main {
private static int n;
private static int m;
private static int root;
private static ArrayList<Integer> [] graph;
private static int [] visited;
private static LinkedList<Integer> queue;
public static void main(String []args) {
File inputFile = new File("bfs.in");
File outputFile = new File("bfs.out");
try {
FileInputStream inputStream = new FileInputStream(inputFile);
Scanner scanner = new Scanner(inputStream);
n = scanner.nextInt(); // number of nodes - how many lists
m = scanner.nextInt(); // number of edges - how many rows
root = scanner.nextInt() - 1; // source - root
graph = new ArrayList[n];
visited = new int [n];
for (int i = 0; i < n; i++){
graph[i] = new ArrayList<Integer>();
visited[i] = -1;
}
visited[root] = 0;
for (int i = 0; i < m; i++){
int x = scanner.nextInt();
int y = scanner.nextInt();
graph[x - 1].add(y - 1);
}
inputStream.close();
queue = new LinkedList<Integer>();
queue.push(root);
while (queue.size() > 0){
int node = queue.pop();
for (int adjacentNode: graph[node]) {
if (visited[adjacentNode] == -1) {
queue.push(adjacentNode);
visited[adjacentNode] = visited[node] + 1;
}
}
}
FileOutputStream outputStream = new FileOutputStream(outputFile);
PrintWriter writer = new PrintWriter(outputStream);
for (int i = 0; i < n; i++){
writer.print(visited[i] + " ");
}
writer.close();
outputStream.close();
} catch(IOException e) {
}
}
}