ĐÁNH DẤU ĐỒ THỊ

Nguồn: None

Cho một đồ thị có hướng không chu trình (DAG) gồm \(n\) đỉnh \(m\) cạnh. Đồ thị không có khuyên hay nhiều cạnh nối cùng một cặp đỉnh, tuy nhiên có thể không liên thông.

Nhiệm vụ của bạn trong bài này là gán giá trị cho các đỉnh (từ đây gọi giá trị của đỉnh \(i\)\(A_{i}\)) trong đồ thị sao cho:

- Các giá trị này tạo thành một hoán vị có độ dài \(n\) (mỗi số từ 1 đến \(n\) xuất hiện đúng một lần trong dãy).

- Nếu tồn tại một cạnh có hướng nối từ \(u\) tới \(v\) thì \(A_{u} < A_{v}\).

- Nếu tồn tại nhiều cách sắp xếp thì chọn dãy \(A\) có thứ tự từ điển là nhỏ nhất.

Yêu cầu: Hãy tìm dãy giá trị thỏa mãn tất cả điều kiện trên.

Dữ liệu vào:

- Dòng đầu tiên chứa hai số nguyên \(n\)\(m\) (\(1 \leq n,\ m \leq 10^{5}\));

- Dòng thứ \(i\) trong số \(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(u_{i}\)\(v_{i}\) \((1 \leq u_{i},\ v_{i} \leq n)\), cho biết có cạnh có hướng nối từ \(u_{i}\) đến \(v_{i}\). Dữ liệu đảm bảo giữa hai đỉnh bất kỳ không có nhiều hơn một cạnh nối và đồ thị đã cho không có chu trình.

Kết quả:

+ Ghi ra \(n\) số nguyên từ \(1\) đến \(n\) là hoán vị nhỏ nhất có thể tìm được.

Ví dụ:

Input Output Input Out[ut
3 3
1 2
1 3
3 2
1 3 2 4 5
3 1
4 1
2 3
3 4
2 4
4 1 2 3

Ràng buộc:

+ 30% số điểm tương ứng với 30% số test có \(n\ \leq \ 8\);

+ 30% số điểm tương ứng với 30% số test có \(n\ \leq \ 2000\);

+ 40% số điểm không có ràng buộc gì thêm.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. sythai (4/5)
  3. hungeazy08 (4/26)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]