Pagini recente » Cod sursa (job #1010379) | Cod sursa (job #2030659) | Cod sursa (job #1238969) | Cod sursa (job #1726969) | Cod sursa (job #1705703)
import java.util.*;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
class Main {
static Map<Integer, List<Integer>> graph;
static int dist[];
static boolean visited[];
static final int AVAILABLE = -1;
static void bfs(int s) {
dist[s] = 0;
visited[s] = true;
Queue<Integer> q = new LinkedList<Integer>();
q.add(s);
while (!q.isEmpty()) {
Integer u = q.poll();
List<Integer> uSucc = graph.get(u);
for (Integer v : uSucc) {
if (!visited[v]) {
visited[v] = true;
dist[v] = dist[u] + 1;
q.add(v);
}
}
}
}
static void init_graph(int n) {
graph = new HashMap<Integer, List<Integer>>();
for (int i = 1; i <= n; i++)
graph.put(i, new ArrayList<Integer>());
}
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(new FileReader("bfs.in"));
int N = input.nextInt(),
M = input.nextInt(),
S = input.nextInt();
visited = new boolean[N + 1];
dist = new int[N + 1];
for (int i = 0; i < N + 1; i++)
dist[i] = -1;
init_graph(N);
int node1, node2;
for (int i = 0; i < M; i++) {
node1 = input.nextInt();
node2 = input.nextInt();
graph.get(node1).add(node2);
}
input.close();
bfs(S);
PrintWriter output = new PrintWriter("bfs.out");
for (int i = 1; i < N + 1; i++) {
output.print(dist[i] + " ");
}
output.close();
}
}