Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Pypy 3, Python
Điểm: 1000 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: BFS.INP Output: BFS.OUT

Cho đồ thị vô hướng gồm \(n\) đỉnh và \(m\) cạnh, các đỉnh đánh chỉ số từ \(1\) đến \(n\). Tìm số cạnh ít nhất trên đường đi từ đỉnh \(1\) đến các đỉnh còn lại.

Input

  • Dòng đầu ghi hai số nguyên dương \(n\)\(m\) (\(1 \le n \le 1000\); \(1 \le m \le \min(10000, \frac{n(n-1)}{2})\)).
  • Trong \(m\) dòng tiếp theo, mỗi dòng ghi \(2\) số nguyên \(x\)\(y\) thể hiện một cạnh của đồ thị (\(1 \le x, y \le n\)).

Output

  • Kết quả ghi ra gồm \(n - 1\) dòng, dòng thứ \(i\) ghi độ dài của đường đi ngắn nhất từ đỉnh \(1\) đến đỉnh \(i + 1\) (\(1 \le i \le n - 1\)). Nếu không có đường đi thì ghi \(-1\).

Example

Test 1

Input
5 4
1 2
2 3
1 3
2 5
Output
1
1
-1
2
Note

Minh họa đồ thị:

  • Đường đi từ \(1\) đến \(2\): \(1 \to 2\) (độ dài \(1\))
  • Đường đi từ \(1\) đến \(3\): \(1 \to 3\) (độ dài \(1\))
  • Đường đi từ \(1\) đến \(4\): Không có đường đi (ghi \(-1\))
  • Đường đi từ \(1\) đến \(5\): \(1 \to 2 \to 5\) (độ dài \(2\))

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.