Chọn ĐTQG TPHCM 2022 - Phân luồng

Xem dạng PDF

Gửi bài giải

Điểm: 70,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Phân luồng giao thông là một trong những giải pháp làm giảm tình trạng kẹt xe. Xét một khu vực có ~N~ địa điểm (được đánh số từ ~1~ đến ~N~) và ~M~ đoạn đường nối các địa điểm (được đánh số từ ~1~ đến ~M~). Ban đầu các đoạn đường này là hai chiều. Tuy nhiên trước tình trạng kẹt xe ngày càng tăng, ban quản lý giao thông (BQLGT) quyết định phân luồng tất cả ~M~ đoạn đường trên thành đường một chiều. Xét một đoạn đường nối hai địa điểm thứ nhất là ~a~ và thứ hai là ~b~, nếu đoạn đường được phân luồng đi từ ~a~ đến ~b~ thì ta gọi là đi theo chiều phải (kí hiệu P), nếu phân luồng đi từ ~b~ đến ~a~ thì ta gọi là đi theo chiều trái (kí hiệu T). Tuy nhiên, sau khi phân luồng thì từ một địa điểm này có thể không đến được một địa điểm khác. BQLGT liệt kê ra các cặp địa điểm quan trọng và yêu cầu cần đảm bảo có đường đi từ địa điểm thứ nhất đến địa điểm thứ hai của các cặp địa điểm đó.

Yêu cầu: Cho trước mạng lưới giao thông ban đầu và danh sách các cặp địa điểm cần đảm bảo có đường đi từ địa điểm thứ nhất đến địa điểm thứ hai của các cặp địa điểm. Hãy viết một chương trình xác định chiều của mỗi đoạn đường để thỏa yêu cầu của BQLGT. Có thể giả sử dữ liệu đề bài luôn đảm bảo có phương án phân luồng thỏa yêu cầu của BQLGT.

Input

Dòng đầu chứa hai số nguyên ~N, M~ lần lượt là số lượng địa điểm và số đoạn đường trong khu vực. Dòng thứ ~i~ trong ~M~ dòng tiếp theo chứa hai số nguyên ~a_i, b_i~ cho biết đoạn đường thứ ~i~ nối hai địa điểm ~a_i~ và ~b_i~ ~(1 \le a_i, b_i \le N)~. Có thể có nhiều đoạn đường nối cùng một cặp địa điểm, cũng có khả năng một đoạn đường nối một địa điểm với chính nó. Dòng tiếp theo chứa một số nguyên ~K~ cho biết số lượng cặp địa điểm cần đảm bảo có đường đi sau khi phân luồng. Dòng thứ ~j~ trong ~K~ dòng tiếp theo lần lượt chứa hai số nguyên ~x_j~ và ~y_j~ ~(1 \le x_j, y_j \le N)~ cho biết cần đảm bảo có đường đi từ ~x_j~ đến ~y_j~ sau khi phân luồng.

Output

Ghi ra chiều của các đoạn đường sau khi phân luồng và thỏa yêu cầu của BQLGT. Kết quả là một chuỗi có ~M~ kí tự, trong đó kí tự thứ ~i~ sẽ là:

  • P nếu đoạn đường thứ ~i~ bắt buộc phải đi theo chiều phải để thỏa yêu cầu của BQLGT.

  • T nếu đoạn đường thứ ~i~ bắt buộc phải đi theo chiều trái để thỏa yêu cầu của BQLGT.

  • X nếu đoạn đường thứ ~i~ khi quy hoạch đi theo chiều trái hay chiều phải thì đều có giải pháp phân luồng thỏa yêu cầu của BQLGT.

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~1 \le N, M \le 10^3; 1 \le K \le 100~
2 ~30\%~ ~1 \le N, M \le 10^5; 1 \le K \le 100~
3 ~40\%~ ~1 \le N, M \le 10^5; 1 \le K \le 10^5~

Sample Input 1

6 7
1 2
2 3
2 4
5 4
5 4
6 5
3 5
2
1 6
3 6

Sample Output 1

PXXXXTX

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.