Pagini recente » Borderou de evaluare (job #1773531) | Cod sursa (job #1494236) | Borderou de evaluare (job #2634654) | Borderou de evaluare (job #1229172) | Cod sursa (job #3181800)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
//Scanner scanner = new Scanner(new File("bfs.in"));
BufferedReader br = new BufferedReader(new FileReader("bfs.in"));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int[] found = new int[n+1];
Arrays.fill(found, -1);
int m = Integer.parseInt(st.nextToken());
int s = Integer.parseInt(st.nextToken());
found[s] = 0;
Map<Integer, List<Integer>> graph = new HashMap<>();
for (int i = 0; i < m; i++) {
st = new StringTokenizer(br.readLine());
int from = Integer.parseInt(st.nextToken());
int to = Integer.parseInt(st.nextToken());
if (!graph.containsKey(from)) {
graph.put(from, new ArrayList<>());
}
graph.get(from).add(to);
}
Queue<Integer> q = new LinkedList<>();
q.add(s);
while (!q.isEmpty()) {
int curr = q.poll();
for (var next : graph.getOrDefault(curr, List.of())) {
if (found[next] == -1) {
found[next] = found[curr] + 1;
q.add(next);
}
}
}
FileWriter fileWriter = new FileWriter("bfs.out");
PrintWriter printWriter = new PrintWriter(fileWriter);
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= n; i++) {
sb.append(found[i]);
if (i != n) {
sb.append(' ');
}
}
printWriter.write(sb.toString());
printWriter.close();
}
}