BBFS - BFS cơ bản
Dữ liệu vào: Standard input
Dữ liệu ra: Standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 128 megabyte
Đăng bởi: ngocbi09

Cho một đồ thị vô hướng gồm N đỉnh đánh số từ 1 tới N và M cạnh. Độ dài của mỗi cạnh có giá trị là 1. Một đồ thị sẽ có 1 nút trung tâm S.

Yêu cầu: với mỗi đỉnh có thể tới được từ đỉnh S, tính khoảng cách ngắn nhất từ đỉnh đó tới S và in ra các đỉnh theo thứ tự khoảng cách ngắn nhất tăng dần. Lưu ý: nếu 2 đỉnh có khoảng cách bằng nhau thì nhãn nào nhỏ hơn sẽ đứng trước.

Input:

  • Dòng đầu gồm 3 số nguyên N, M, S. ( N<=100000, M<=100000, 1<=S<=N)
  • M dòng sau mỗi dòng gồm 2 số thể hiện 2 đầu của một cạnh.

Output

  • In ra số dòng tương ứng với số đỉnh có thể tới được từ S theo thứ tự khoảng cách ngắn nhất tăng dần.
  • Trên mỗi dòng in ra nhãn của đỉnh đó và khoảng cách ngắn nhất của đỉnh đó tới S.

Ví dụ

  • input
    7 6 1
    1 2
    2 3
    3 4
    4 5
    5 6
    1 3
    output
    1 0
    2 1
    3 1
    4 2
    5 3
    6 4
  • input
    4 4 2
    1 2
    4 3
    3 1
    4 2

    output
    2 0
    1 1
    4 1
    3 2
Back to Top