- .LCN với chương trình LOGO, PAS với chương trình PASCAL
1. Đèn giao thông Bài toán
Bài toán
Đường giao thông tại thành phố Dingilville được xây dựng theo một kiểu đặc biệt. Thành phố có những bục binh và các con đường nối các bục binh nàỵ Giữa hai bục binh có ít nhất là một đường. Không có đường đi vào nối bục binh với chính nó. Các đường đi trong thành phố đều là hai chiềụ Tại mỗi bục binh có treo một đèn, sẽ có màu xanh và đỏ thay đổi nhaụ Đường đi giữa hai bục binh chỉ cho phép nếu các đèn tại 2 bục binh này cùng màu tại thời gian bắt đầu đi từ bục binh này đến bục binh kiạ Nếu điều kiện trên không thoả mãn, các phương tiện cần phải chờ tại các bục binh. Người ta cho môt bản đồ thành phố bao gồm:
• • Thời gian chạy trên các đường (số nguyên)
• • Thời gian đèn sáng của các màu tại mỗi bục binh (số nguyên)
• • Màu ban đầu tại mỗi bục binh và thời gian còn lại cho đến khi đổi màu tại bục binh nàỵ
Yêu cầu của bài toán là tìm một đường đi với ít thời gian nhất từ một bục binh xuất phát ban đầu đến một bục binh đích. Trờng hợp có nhưiều đường đi chỉ cần chỉ ra một trong chúng.
Hạn chế kỹ thuật
• • 2 <= N <= 300với N - số các bục binh. Các bục binh được đánh số từ 1 đến N.
• • 1 <= M <= 14000 với M - số các đường đị
• • 1 <= lij <= 100 với lij - thời gian cần thiết để đi từ bục binh i đến bục binh j theo một con đường nối i, j.
• • 1 <= tic <= 100 với tic - là thời gian cho màu C tại bục binh i, với C là hoặc B - xanh, P - đỏ.
• • 1 <= ric <= tic với ric - thời gian còn lại của màu ban đầu C tại bục binh ị
Input là tệp lights.inp
• • Dòng đầu tiên ghi 2 số: đó là mã số của bục binh xuất phát và bục binh đích cần tìm đường đị
• • Dòng thứ 2 ghi hai số N, M.
• • N dòng tiếp theo ghi các thông số của N bục binh. Các thông số của bục binh i bao gồm: Ci, ric, tiB, tiP ở đây Ci là 'B' hoặc 'P' chỉ ra màu ban đầu của bục binh ị
• • M dòng tiếp theo ghi các thông tin của M đường đi, mỗi dòng ghi các thông số: i, j, lij với ý nghĩa đường này kết nối các bục binh i và j.
Output
Output là tệp lights.out
Nếu đường đi tồn tại:
• • Dòng đầu tiên ghi thời gian tối thiểu cho đường đi từ bục binh xuất phát đến bục binh đích.
• • Dòng thứ hai ghi danh sách các bục binh trên đường đi tối ưu đó, bắt đầu từ bục binh xuất phát và kết thúc bởi bục binh đích.
Nếu đường đi không tồn tại:
• • Một dòng ghi số 0
Ví dụ
Trắc nghiệm
Chương trình của bạn chỉ được phép chạy trong 2 giâỵ