Pagini recente » Cod sursa (job #439256) | Cod sursa (job #634886) | Cod sursa (job #546324) | Cod sursa (job #598373) | Cod sursa (job #1705116)
package patest;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;
public class BFS {
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader br = new BufferedReader(new FileReader("bfs.in"));
String temp[] = br.readLine().split(" ");
int N = Integer.parseInt(temp[0]);
int M = Integer.parseInt(temp[1]);
int S = Integer.parseInt(temp[2]);
List<List<Integer>> g = new ArrayList<>();
for (int i = 0; i <= M; i++) {
g.add(new ArrayList<Integer>());
}
for (int i = 0; i < M; i++) {
temp = br.readLine().split(" ");
int x = Integer.parseInt(temp[0]);
int y = Integer.parseInt(temp[1]);
g.get(x).add(y);
}
dist = new int[M];
for (int i = 0; i < M; i++) {
dist[i] = -1;
}
dfs(S, g);
PrintWriter writer = new PrintWriter("bfs.out", "UTF-8");
for (int i = 1; i <= N; i++) {
writer.print(dist[i] + " ");
}
writer.close();
}
static int dist[];
private static void dfs(int src, List<List<Integer>> g) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(src);
dist[src] = 0;
while (!pq.isEmpty()) {
int n = pq.poll();
for (Integer i : g.get(n)) {
if (dist[i] == -1) {
dist[i] = dist[n] + 1;
pq.add(i);
}
}
}
}
}