You are on page 1of 6

BFS – (Breadth - First Search)

Thuật toán Tìm kiếm theo chiều rộng


1. ĐƯỜNG ĐI NGẮN NHẤT BFS_MINPATH
Cho một đơn đồ thị vô hướng không trọng số gồm có 𝑁 đỉnh và 𝑀 cạnh. Cho hai đỉnh
𝑠𝑡𝑎𝑟𝑡 và 𝑑𝑒𝑠, tìm đường đi ngắn nhất từ 𝑠𝑡𝑎𝑟𝑡 đến 𝑑𝑒𝑠.
Input: đọc từ file BFS_MINPATH.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀, 𝑠𝑡𝑎𝑟𝑡, 𝑑𝑒𝑠. (0 < 𝑠𝑡𝑎𝑟 ≤ 𝑑𝑒𝑠 ≤ 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_MINPATH.OUT gồm:
- Dòng 1 là số đỉnh đã đi qua trên đường đi ngắn nhất.
- Dòng 2 ghi các đỉnh theo thứ tự từ 𝑠𝑡𝑎𝑟𝑡 đến 𝑑𝑒𝑠.
Example:
BFS_MINPATH.INP BFS_MINPATH.OUT
5615 3
12 135
13
34
24
35
54

2. ĐỘ CAO CỦA LÁ BFS_LEAFHEIGHT


Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh và 1 đỉnh gốc. Tìm cao của các lá theo thứ tự từ nhỏ
đến lớn theo cách duyệt BFS?
Input: đọc từ file BFS_MINHEIGHT.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀, 𝑟𝑜𝑜𝑡. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_MINHEIGHT.OUT gồm: In ra độ cao của các lá theo thứ tự từ
nhỏ đến lớn theo dạng: chỉ số lá – độ cao của lá.
Example:
BFS_MINHEIGHT.INP BFS_MINHEIGHT.OUT
441 22
12 43
13
23
34
3. ĐỘ CAO NHỎ NHẤT BFS_MINHEIGHT
Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh. Tìm độ cao nhỏ nhất của đồ thị?
Input: đọc từ file BFS_MINHEIGHT.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_MINHEIGHT.OUT gồm: 1 số duy nhất là độ cao nhỏ nhất của đồ
thị.
Example:
BFS_MINHEIGHT.INP BFS_MINHEIGHT.OUT
67 3
12
13
34
24
35
54
46

4. KIỂM TRA LIÊN THÔNG BFS_CONNECTED


Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh. Kiểm tra xem đồ thị có liên thông hay không?
Input: đọc từ file BFS_CONNECTED.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_CONNECTED.OUT: ghi ra “YES” nếu đồ thị liên thông, ngược lại
ghi ra “NO”.
Example:
BFS_CONNECTED.INP BFS_CONNECTED.OUT
43 NO
12
23
31
32 YES
12
13

5. ĐẾM SỐ VÙNG LIÊN THÔNG BFS_CNTCONN


Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh. Đếm số vùng liên thông của đồ thị?
Input: đọc từ file BFS_CNTCONN.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_CNTCONN.OUT: ghi ra một số duy nhất là số vùng liên thông
của đồ thị.
Example:
BFS_CNTCONN.INP BFS_CNTCONN.OUT
53 3
12
23
31
32 1
12
13

6. LIỆT KÊ ĐỈNH TRỤ BFS_DINHTRU


Cho 1 đồ thị liên thông gồm có 𝑁 đỉnh và 𝑀 cạnh. Liệt kê các đỉnh trụ của đồ thị theo thứ
tự từ bé đến lớn.
Input: đọc từ file BFS_DINHTRU.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file BFS_DINHTRU.OUT: In ra các đỉnh trụ, mỗi đỉnh trên 1 dòng.
Example:
BFS_DINHTRU.INP BFS_DINHTRU.OUT
55 2
12 4
23
31
24
45

7. LIỆT KÊ CẠNH CẦU BFS_CANHCAU


Cho 1 đồ thị liên thông gồm có 𝑁 đỉnh và 𝑀 cạnh. Liệt kê các cạnh cầu của đồ thị theo
thứ tự từ bé đến lớn.
Input: đọc từ file BFS_CANHCAU.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file CANHCAU.OUT: In ra các cạnh cầu, mỗi cạnh trên 1 dòng. In theo
thứ tự từ bé đến lớn.
Example:
BFS_CANHCAU.INP BFS_CANHCAU.OUT
55 24
12 45
23
31
24
45
DFS – (Depth- First Search)
Thuật toán Tìm kiếm theo chiều sâu
8. ĐƯỜNG ĐI THEO THỨ TỰ TỪ ĐIỂN DFS_DICPATH
Cho một đơn đồ thị vô hướng không trọng số gồm có 𝑁 đỉnh và 𝑀 cạnh. Cho hai đỉnh
𝑠𝑡𝑎𝑟𝑡 và 𝑑𝑒𝑠, tìm đường đi các đỉnh được xếp theo theo thứ tự từ điển nhất có thể
từ 𝑠𝑡𝑎𝑟𝑡 đến 𝑑𝑒𝑠.
Input: đọc từ file DFS_DICPATH.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀, 𝑠𝑡𝑎𝑟𝑡, 𝑑𝑒𝑠. (0 < 𝑠𝑡𝑎𝑟 ≤ 𝑑𝑒𝑠 ≤ 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_DICPATH.OUT gồm:
- Dòng 1 là số đỉnh đã đi qua.
- Dòng 2 ghi các đỉnh theo thứ tự từ 𝑠𝑡𝑎𝑟𝑡 đến 𝑑𝑒𝑠.
Example:
DFS_DICPATH.INP DFS_DICPATH.OUT
6716 5
15 12346
56
13
12
23
34
46

9. ĐỘ CAO CỦA LÁ DFS_LEAFHEIGHT


Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh và 1 đỉnh gốc. Tìm cao của các lá theo thứ tự từ nhỏ
đến lớn theo cách duyệt DFS?
Input: đọc từ file DFS_LEAFHEIGHT.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀, 𝑟𝑜𝑜𝑡. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_LEAFHEIGHT.OUT gồm: In ra độ cao của các lá theo thứ tự từ
nhỏ đến lớn theo dạng: chỉ số lá – độ cao của lá.
Example:
DFS_LEAFHEIGHT.INP DFS_LEAFHEIGHT.OUT
441 44
12
13
23
34
10. KIỂM TRA LIÊN THÔNG DFS_CONNECTED
Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh. Kiểm tra xem đồ thị có liên thông hay không?
Input: đọc từ file DFS_CONNECTED.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_CONNECTED.OUT: ghi ra “YES” nếu đồ thị liên thông, ngược lại
ghi ra “NO”.
Example:
DFS_CONNECTED.INP DFS_CONNECTED.OUT
43 NO
12
23
31
32 YES
12
13

11. ĐẾM SỐ VÙNG LIÊN THÔNG DFS_CNTCONN


Cho đồ thị gồm có 𝑁 đỉnh và 𝑀 cạnh. In ra số vùng liên thông của đồ thị?
Input: đọc từ file DFS_CNTCONN.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_CNTCONN.OUT: ghi ra một số duy nhất là số vùng liên thông
của đồ thị.
Example:
DFS_CNTCONN.INP DFS_CNTCONN.OUT
53 3
12
23
31
32 1
12
13

12. LIỆT KÊ ĐỈNH TRỤ DFS_DINHTRU


Cho 1 đồ thị liên thông gồm có 𝑁 đỉnh và 𝑀 cạnh. Liệt kê các đỉnh trụ của đồ thị theo thứ
tự từ bé đến lớn.
Input: đọc từ file DFS_DINHTRU.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_DINHTRU.OUT: In ra các đỉnh trụ, mỗi đỉnh trên 1 dòng.
Example:
DFS_DINHTRU.INP DFS_DINHTRU.OUT
55 2
12 4
23
31
24
45

13. LIỆT KÊ CẠNH CẦU DFS_CANHCAU


Cho 1 đồ thị liên thông gồm có 𝑁 đỉnh và 𝑀 cạnh. Liệt kê các cạnh cầu của đồ thị theo
thứ tự từ bé đến lớn.
Input: đọc từ file DFS_CANHCAU.INP gồm:
- Dòng đầu tiên gồm 4 số: 𝑁, 𝑀. (0 < 𝑁 < 100)
- M dòng sau gồm 2 số nguyên 𝑢, 𝑣 là 2 đỉnh của 1 cạnh của đồ thị.
Output: ghi ra file DFS_CANHCAU.OUT: In ra các cạnh cầu, mỗi cạnh trên 1 dòng. In
theo thứ tự từ bé đến lớn.
Example:
DFS_CANHCAU.INP DFS_CANHCAU.OUT
55 24
12 45
23
31
24
45

You might also like