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
Yêu cầu: Tính tổng các chữ số lẻ có trong số N. Dữ liệu vào: Nhập vào từ bàn phím một số nguyên dương N (0<N<10 Dữ liệu ra: In ra màn hình tổng các chữ số lẻ có trong số N. Ví dụ