Luồng cực đại trên mạng

Một phần của tài liệu Chuyên đề đồ thị trong lập trình pascal FULL (Trang 50 - 55)

Mã bài: NKFLOW

Trong lý thuyết đồ thị, mạng luồng là một đồ thị có hướng, trong đó mỗi cạnh có một độ thông qua và một giá trị luồng. Lượng luồng trên mỗi cạnh không được vượt quá độ thông qua của cạnh đó. Lượng luồng đi vào một đỉnh phải bằng lượng luồng đi ra khỏi nó, trừ khi đó là đỉnh nguồn (có nhiều lượng luồng đi ra hơn), hay đỉnh đích (có nhiều lượng luồng đi vào hơn). Mạng luồng có thể dùng để mô hình hóa hệ thống đường giao thông, dòng chảy của chất lỏng trong ống, dòng điện trong mạch, hay bất kỳ các bài toán nào tương tự khi có sự di chuyển trong một mạng các nút.

Mô hình các ống dẫn nước bằng một mạng luồng. Mỗi ống nước có đường kính xác định nên chỉ cho phép một lưu lượng nước xác định chảy qua. Ở nơi giao điểm giữa các ống, lưu lượng nước đi vào phải bằng lưu lượng nước đi ra nếu không nước sẽ nhanh chóng bị thất thoát. Ta có một bồn nước, hay đỉnh phát, và một vòi nước, hay đỉnh thu. Một cách trực quan, giá trị luồng trên mạng chính là vận tốc nước chảy ra từ vòi. Luồng còn có thể mô hình sự lưu chuyển của người hay hàng hóa trên các mạng giao thông, dòng điện trong hệ thống phân phối,... Đối với các hệ thống mạng này, luồng đi vào các nút trung gian cần phải bằng luồng đi ra khỏi nút đó. Tính chất này cũng giống như định luật dòng điện Kirchhoff. Mạng luồng còn được ứng dụng trong sinh thái học: mạng luồng xuất hiện khi xem xét sự lưu chuyển chất dinh dưỡng và năng lượng giữa các nhóm khác nhau trong một mạng thức ăn. Các bài toán gắn với loại mạng sinh thái này hoàn toán khác với trường hợp mạng chất lỏng hay mạng giao thông.

Bài toán luồng cực đại trên mạng yêu cầu tìm một luồng tương thích có giá trị lớn nhất trong mạng luồng có một đỉnh phát và một đỉnh thu. Bài toán luồng cực đại trên mạng có thể xem như trường hợp đặc biệt của lớp các bài toán mạng phức tạp hơn, chẳng hạng như bài toán lưu thông. Định lý luồng cực đại-lát cắt hẹp nhất (max-flow min-cut theorem) chỉ ra giá trị luồng cực đại từ s đến t (đỉnh phát đến đỉnh thu) bằng giá trị của lát cắt s-t hẹp nhất trên mạng.

Bạn hãy thử giải quyết bài toán luồng cực đại trên mạng: cho một mạng luồng, hãy tìm giá trị luồng cực đại.

Dữ liệu

• Dòng đầu tiên chứa 4 số nguyên dương n, m, s, t, (2 ≤ n ≤ 1000) tương ứng là số đỉnh, số cạnh của đồ thị, chỉ số của đỉnh phát và đỉnh thu.

• m dòng tiếp theo, mỗi dòng có dạng ba số u, v, c cách nhau ít nhất một dấu cách thể hiện có cung u, v trong mạng với khả năng thông qua là c (1 ≤ c ≤ 106).

Kết qủa

Ví dụ NHP.INP NHP.OUT 3 2 2 2 2 0 2 0 1 0 2 1 2 2 2 1 2 2 2 2 2 2 2 1 1 2 1 1 2 3 Dữ liệu: 6 8 1 6 1 2 5 1 3 5 2 4 6 2 5 3 3 4 3 3 5 1 4 6 6 5 6 6 Kết qủa 9 Bảo vệ Mã bài: BAOVE

Một mạng lưới gồm N thành phố, và một số đường một chiều nối các cặp thành phố (giữa hai thành phố có thể có nhiều đường nối một chiều). Quân địch đang tập trung ở thành phố N, định tiến công ta ở thành phố 1, và chúng sẽ tiến công trên tất cả các con đường chưa được bảo vệ để tiến vào thành phố 1. Bộ chỉ huy ta cần xác định số quân ít nhất trên các con đường để chặn địch tiến về thành phố 1.

Input

Dòng đầu ghi N (N ≤ 5000)

Các dòng tiếp theo cho đến hết file, mỗi dòng một tả 1 đường gồm u, v, s cho biết có đoạn đường một chiều từ u đến v, và phải cần ít nhất s quân để chặn địch trên đường này. (s ≤ 65000)

Có không quá 10000 đường.

Output

Ví dụ NKFLOW.INP NKFLOW.OUT 10 10 7 25050 6 1 12564 10 4 23916 5 1 61054 10 9 50950 9 1 35558 10 2 60941 3 1 22203 8 2 2853 5 7 31422 3 7 41491 8 7 27235 4 8 55965 8 6 41980 3 6 47707 2 3 45320 3 8 11237 7 6 38734 5 6 7561 3 5 8844 79169 Example 2. Báo động đỏ Mã bài: ALERT

Thế giới những năm 2077 hình thành nên 2 thái cực rõ ràng , các nước hoặc là đi theo con đường Chủ Nghĩa Xã Hội hoặc là theo Tư Bản Chủ Nghĩa. Khởi xướng nên các luồng tư tưởng này là 2 nước Lào và Campuchia . Lào và 1 số nước thân Lào theo đường lối Xã Hội Chủ Nghĩa còn Campuchia và 1 số nước thân Campuchia theo Tư Bản Chủ Nghĩa. Như ta đã biết nền kinh tế các năm trong tương lai là nền kinh tế tri thức và của các mối quan hệ. Nếu trước đây 2 nước X và Y có quan hệ kinh tế là Z tỉ đôla với nhau và giờ X theo CNXH còn Y theo TBCN thì 2 nước này sẽ cắt đứt mối quan hệ kinh tế với nhau , đối với nền kinh tế thế giới thì thực sự là 1 tổn thất lớn , còn nếu 2 nước cùng đi theo cùng 1 con đường chính trị thì mối quan hệ đó vẫn được duy trì . Tuy nhiên năm nay mới là năm 2007 vì thế mới chỉ có Lào , các nước thân Lào là theo CNXH và Campuchia và các nước thân Campuchia theo TBCN , còn lại các nước vẫn theo con đường trung lập và tới năm 2077

họ mới chọn TBCN hay là XHCN.

Biết bạn rất giỏi lập trình , các chuyên gia thuộc Liên Hợp Quốc muốn nhờ bạn hãy lập trình tính xem tới năm 2077 thì trong tình huống tốt nhất thì Tổng Giá Trị Kinh Tế Toàn

Cầu là bao nhiêu ? Biết rằng Tổng Giá Trị Kinh Tế Toàn Cầu được tính bằng tổng giá trị các mối quan hệ kinh tế giữa các nước trên thế giới .

Input

Dòng 1 : Số nguyên dương N ( 1 ≤ N ≤ 200 ) là số lượng các quốc gia trên thế giới , các quốc gia được đánh số thứ tự từ 1 -> N . Dòng 2 : Số nguyên dương L là các nước tính tới thời điểm hiện tại đang theo CNXH . Dòng 3 : Gồm L số nguyên dương là chỉ số của các nước đang theo CNXH . Dòng 4 : Số nguyên dương C là các nước tính tới thời điểm hiện tại đang theo TBCN. Dòng 5 : Gồm C số nguyên dương là chỉ số của các nước đang theo TBCN . Dòng 6 : Số nguyên dương M ( 1 ≤ M ≤ N*(N-1)/2 ) là số quan hệ kinh tế giữa các nước

trên thế giới .

M dòng tiếp theo , dòng thứ i gồm 3 số nguyên dương Xi Yi Zi ( 1 ≤ Xi ≠ Yi ≤ N , 1 ≤ Zi ≤ 1000 ) mô tả 1 mối quan hệ kinh tế .

Output

Dòng 1 : Số nguyên dương K là Tổng Giá Trị Kinh Tế Toàn Cầu trong tình huống tốt nhất và số nguyên dương T là số nước theo XHCN trong tình huống đó . Dòng 2 : Ghi ra chỉ số của T nước theo CNXH trong tình huống tốt nhất đó. Nếu có nhiều phương án thì chỉ ra phương án mà có số lượng nước theo CNXH là nhiều nhất .

Ví dụ: ALERT.INP ALERT.OUT 3 1 1 1 3 1 1 2 10 10 2 1 2 3. Monkey island Mã bài: NKTRAFIC

Sau khi phân chia đất nước thành các thành phố, đảo khỉ lại nảy sinh vấn đề mới: phải ngăn chặn việc vận chuyển chuối! Đảo khí có N thành phố đánh số từ 1 đến N nối với nhau bởi M đường nối hai chiều. Giữa hai thành phố có nhiều nhất một con đường. Giữa hai thành phố bất kỳ có ít nhất một đường đi (tạo bởi một hoặc nhiều con đường). Đảo khỉ có hai thủ đô là thành phố 1 và thành phố N.

Gần đây, việc vận chuyển chuối giữa hai thủ đô tăng vọt. Để tấn công việc vận chuyển, tổng thống huy động G binh lính, mỗi binh lính có thể đặt tại vị trí bất kỳ trên một con đường, có thể gần thành phố tùy ý, nhưng không được nằm trong thành phố. Trong trường

hợp có lệnh tấn công vào một trong hai thủ đô, tất cả binh lính phải di chuyển đến thủ đô đó. Các binh lính di chuyển với vận tốc không đổi. Thời gian cần thiết để huy động một cuộc tấn công như vậy bằng khoảng cách lớn nhất từ các binh lính đến một trong hai thủ đô. (adsbygoogle = window.adsbygoogle || []).push({});

Yêu cầu: xác định một cách bố trí các binh lính sao cho mọi đường đi từ thủ đô này đến thủ đô kia đều đi qua ít nhất một con đường có binh lính gác và thời gian huy động tấn công trong trường hợp xấu nhất là nhỏ nhất.

Dữ liệu

• Dòng đầu tiên chứa 3 số nguyên N, M, G cách nhau bởi khoảng trắng.

• Mỗi dòng trong số M dòng sau chứa 3 số nguyên a, b, c cách nhau bởi khoảng trắng, cho biết có một đường nối hai chiều giữa thành phố a và b với độ dài c.

Kết qủa

In ra một số nguyên duy nhất là thời gian nhỏ nhất để tất cả các binh lính có thể di chuyển đến một thủ đô, với đúng một chữ số thập phân. Nếu không có lời giải, in ra -1.

Giới hạn

• 2 < N < 155

• 2 < M < 5055

• 0 < độ dài của một con đường < 1024

• 2 < G < 4096

Ví dụ

NKTRAFIC.INP NKTRAFIC .OUT

6 6 2 1 2 1 2 3 2 3 6 1 1 4 1 4 5 3 5 6 1 2.5 4. Hệ thống đèn Mã bài: LIGHT

Khu vực đặt các bể xăng của một Tổng Công Ty Xăng Dầu có dạng một hình chữ nhật được chia thành m * n ô vuông. Các ô vuông được đánh tọa độ 1 -> m từ trên xuống, 1 -> n từ trái sang.

Tại k ô của lưới có đặt các bể xăng. Người ta cần xây dựng một hệ thống đèn pha chiếu sáng, mỗi đèn chỉ chiếu dọc theo hoặc là hàng hoặc là cột của lưới ô vuông sao cho mỗi bể chứa xăng phải được chiếu sáng bởi ít nhất một đèn pha chiếu dọc theo hàng hoặc cột chứa

nó. Biết:

- ai là chi phí xây dựng đèn chiếu sáng dọc theo hàng. - bj là chi phí xây dựng đèn chiếu sáng dọc theo cột.

Yêu cầu: Tìm cách xây dựng hệ thống đèn với tổng chi phí xây dựng là nhỏ nhất.

Input

-Dòng đầu tiên chứa 3 số nguyên dương m, n, k (m, n <= 100). -Dòng thứ hai chứa m số nguyên a1, a2, ..., am. -Dòng thứ ba chứa n số nguyên b1, b2, ..., bn. - Dòng thứ i trong k dòng tiếp theo chứa tọa độ của bể xăng thứ i.

Output

Một dòng duy nhất ghi tổng chi phí theo cách xây dựng tìm được.

Ví dụ: LIGHT.INP LIGHT.OUT 2 3 4 15 17 2 4 6 1 1 2 2 2 3 2 1 12

Một phần của tài liệu Chuyên đề đồ thị trong lập trình pascal FULL (Trang 50 - 55)