KAHN

Sắp xếp topo (KAHN)

Cho một đồ thị có hướng gồm n đỉnh và m cạnh.

Hãy tìm một thứ tự sắp xếp các đỉnh sao cho:  Với mỗi cạnh u → v thì u đứng trước v trong thứ tự.

Dữ liệu vào (test.inp)

  • Dòng 1: hai số nguyên dương n, m
  • m dòng tiếp theo, mỗi dòng gồm hai số nguyên u v (biểu thị có cạnh có hướng từ u → v)

Dữ liệu ra (test.out)

  • Nếu tồn tại thứ tự topo thì in ra dãy gồm n số nguyên là thứ tự topo hợp lệ
  • Nếu đồ thị có chu trình thì in ra: NO

Gợi ý:

topo=[]

B1: Tính bậc vào (indeg) cho mỗi đỉnh

B2: Đưa các đỉnh indeg = 0 vào hàng đợi

B3: Lặp:
   - Lấy 1 đỉnh ra
   - Thêm vào topo
   - Xóa các cạnh của nó
   - Nếu đỉnh nào indeg = 0 → đưa vào queue

B4: Nếu topo không gồm đủ n đỉnh thì có đồ thị có chu trình, còn không thì topo chính là đán án cần tìm

 


# test.inp test.out
1

CODE
KAHN

Phúc Thành
15/04/2026 15:01:19
7/7 AC
Vạn Lý Độc Hành
14/04/2026 16:04:01
7/7 AC

Sau 3 lần nộp không AC thì sẽ có gợi ý.
Sau 3 lần nộp không AC thì sẽ có gợi ý.