1. Trang chủ
  2. » Giáo án - Bài giảng

Chuyên đề đồ thị trong lập trình pascal FULL

71 3,8K 15

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 827 KB

Nội dung

Trên thực tế có nhiều bài toán liên quan tới một tập các đối tượng và những mối liên hệ giữa chúng, đòi hỏi toán học phải đặt ra một mô hình biểu diễn một cách chặt chẽ và tổng quát bằng ngôn ngữ ký hiệu, đó là đồ thị. Những ý tưởng cơ bản của nó được đưa ra từ thế kỷ thứ XVIII bởi nhà toán học Thuỵ Sĩ Leonhard Euler, ông đã dùng mô hình đồ thị để giải bài toán về những cây cầu Konigsberg nổi tiếng.Mặc dù Lý thuyết đồ thị đã được khoa học phát triển từ rất lâu nhưng lại có nhiều ứng dụng hiện đại. Đặc biệt trong khoảng vài mươi năm trở lại đây, cùng với sự ra đời của máy tính điện tử và sự phát triển nhanh chóng của Tin học, Lý thuyết đồ thị càng được quan tâm đến nhiều hơn. Đặc biệt là các thuật toán trên đồ thị đã có nhiều ứng dụng trong nhiều lĩnh vực khác nhau như: Mạng máy tính, Lý thuyết mã, Tối ưu hoá, Kinh tế học v.v... Chẳng hạn như trả lời câu hỏi: Hai máy tính trong mạng có thể liên hệ được với nhau hay không?; hay vấn đề phân biệt hai hợp chất hoá học có cùng công thức phân tử nhưng lại khác nhau về công thức cấu tạo cũng được giải quyết nhờ mô hình đồ thị. Hiện nay, môn học này là một trong những kiến thức cơ sở của bộ môn khoa học máy tính.Lý thuyết đồ thị là một phần quan trọng trong nội dung chương trình chuyên của môn Tin học tại các trường chuyên. Hầu như trong các đề thi học sinh giỏi đều có các bài toán liên quan đến lý thuyết đồ thị, do đó để học sinh có được kết quả cao chúng ta cần trang bị cho các em một nền tảng tốt cũng như các kỹ thuật cài đặt các bài toán cơ bản của lý thuyết đồ thị.

Trang 1

Trên thực tế có nhiều bài toán liên quan tới một tập các đối tượng và những mốiliên hệ giữa chúng, đòi hỏi toán học phải đặt ra một mô hình biểu diễn một cách chặtchẽ và tổng quát bằng ngôn ngữ ký hiệu, đó là đồ thị Những ý tưởng cơ bản của nóđược đưa ra từ thế kỷ thứ XVIII bởi nhà toán học Thuỵ Sĩ Leonhard Euler, ông đãdùng mô hình đồ thị để giải bài toán về những cây cầu Konigsberg nổi tiếng.

Mặc dù Lý thuyết đồ thị đã được khoa học phát triển từ rất lâu nhưng lại cónhiều ứng dụng hiện đại Đặc biệt trong khoảng vài mươi năm trở lại đây, cùng với sự

ra đời của máy tính điện tử và sự phát triển nhanh chóng của Tin học, Lý thuyết đồ thịcàng được quan tâm đến nhiều hơn Đặc biệt là các thuật toán trên đồ thị đã có nhiềuứng dụng trong nhiều lĩnh vực khác nhau như: Mạng máy tính, Lý thuyết mã, Tối ưuhoá, Kinh tế học v.v Chẳng hạn như trả lời câu hỏi: Hai máy tính trong mạng có thểliên hệ được với nhau hay không?; hay vấn đề phân biệt hai hợp chất hoá học có cùngcông thức phân tử nhưng lại khác nhau về công thức cấu tạo cũng được giải quyết nhờ

mô hình đồ thị Hiện nay, môn học này là một trong những kiến thức cơ sở của bộ mônkhoa học máy tính

Lý thuyết đồ thị là một phần quan trọng trong nội dung chương trình chuyên củamôn Tin học tại các trường chuyên Hầu như trong các đề thi học sinh giỏi đều có cácbài toán liên quan đến lý thuyết đồ thị, do đó để học sinh có được kết quả cao chúng tacần trang bị cho các em một nền tảng tốt cũng như các kỹ thuật cài đặt các bài toán cơbản của lý thuyết đồ thị

Tuy nhiên, lý thuyết đồ thị là một môn học cần tốn nhiều thời gian để truyền đạt,

có một số vấn đề thì cần thiết cho học sinh trong các kỳ thi, một số khác không cầnthiết, đặc biệt là một số vấn đề cần chứng mình, các định lý Mặt khác một số vấn đềlại phải được trang bị sâu nhằm giúp học sinh giải quyết tốt vấn đề trong các đề thi lạikhông có trong nhiều tài liệu lý thuyết đồ thị cổ điển Những vấn đề đó thường liênquan đến ứng dụng của lý thuyết đồ thị để giải quyết các bài toán thực tế.Một vấn đềkhó khăn mà giáo viên gặp phải là quỹ thời gian của chúng ta rất ít mà nội dung giảngdạy nhiều Do đó vấn đề chọn lựa những chuyên đề nào dạy và dạy đến đâu, nhữngvấn đề nào định hướng cho học sinh tự học cần phải đặt ra cho Giáo viên giảng dạy cáclớp chuyên Tin học và các đội tuyển chuẩn bị cho các kỳ thi Học sinh giỏi

Trong phạm vi một chuyên đề, không thể nói kỹ và nói hết những vấn đề của lýthuyết đồ thị mà chỉ giới thiệu các bài toán cơ bản của Lý thuyết đồ thị trong Tin họccùng với phương pháp truyền đạt cho học sinh Tập bài giảng này sẽ xem xét lý thuyết

đồ thị dưới góc độ người lập trình, tức là khảo sát những thuật toán cơ bản nhất có thể

dễ dàng cài đặt trên máy tính một số ứng dụng của nó Các khái niệm trừu tượng vàcác phép chứng minh sẽ được diễn giải một cách hình thức cho đơn giản và dễ hiểuchứ không phải là những chứng minh chặt chẽ dành cho người làm toán Ngoài ra cũngcung cấp một số bài tập trên mạng đã được phân loại thành các dạng giúp giáo viên cónguồn bài tập cung cấp cho học sinh sau khi giảng dạy các chuyên đề Lời giải của cácbài tập được cung cấp dưới dạng chương trình

Trang 2

Nội dung chuyên đề lý thuyết đồ thị

Mục đích

Trang bị cho học sinh các kiến thức cơ bản cần thiết về đồ thị để giải quyết các bàitoán thi học sinh giỏi

1 Các khái niệm cơ bản

2 Các phương pháp tìm kiếm trên đồ thị

3 Chu trình Ơle và Hammilton

Trang 7

2 VOI06 Quân tượng

Trang 8

Mã bài: QBBISHOP

Xét bàn cờ vuông kích thước n×n Các dòng được đánh số từ 1 đến n, từ dưới lên trên Cáccột được đánh số từ 1 đến n từ trái qua phải

Ô nằm trên giao của dòng i và cột j được gọi là ô (i,j) Trên bàn cờ có m (0 ≤ m ≤ n) quân

cờ Với m > 0, quân cờ thứ i ở ô (ri, ci), i = 1,2, , m Không có hai quân cờ nào ở trêncùng một ô Trong số các ô còn lại của bàn cờ, tại ô (p, q) có một quân tượng Mỗi mộtnước đi, từ vị trí đang đứng quân tượng chỉ có thể di chuyển đến được những ô trên cùngđường chéo với nó mà trên đường đi không phải qua các ô đã có quân

Cần phải đưa quân tượng từ ô xuất phát (p, q) về ô đích (s,t) Giả thiết là ở ô đích không cóquân cờ Nếu ngoài quân tượng không có quân nào khác trên bàn cờ thì chỉ có 2 trườnghợp: hoặc là không thể tới được ô đích, hoặc là tới được sau không quá 2 nước đi (hìnhtrái) Khi trên bàn cờ còn có các quân cờ khác, vấn đề sẽ không còn đơn giản như vậy

Yêu cầu: Cho kích thước bàn cờ n, số quân cờ hiện có trên bàn cờ m và vị trí của chúng, ô

xuất phát và ô đích của quân tượng Hãy xác định số nước đi ít nhất cần thực hiện để đưaquân tượng về ô đích hoặc đưa ra số -1 nếu điều này không thể thực hiện được

Input

Dòng đầu tiên chứa 6 số nguyên n, m, p, q, s, t

Nếu m > 0 thì mỗi dòng thứ i trong m dòng tiếp theo chứa một cặp số nguyên ri , ci xácđịnh vị trí quân thứ i

Hai số liên tiếp trên cùng một dòng được ghi cách nhau ít nhất một dấu cách

Trang 9

Bessie rất yêu bãi cỏ của mình và thích thú chạy về chuồng bò vào giờ vắt sữa buổi tối.

Bessie đã chia đồng cỏ của mình là 1 vùng hình chữ nhật thành các ô vuông nhỏ với R (1

<= R <= 100) hàng và C (1 <= C <= 100) cột, đồng thời đánh dấu chỗ nào là cỏ và chỗ nào

là đá Bessie đứng ở vị trí R_b,C_b và muốn ăn cỏ theo cách của mình, từng ô vuông một

và trở về chuồng ở ô 1,1 ; bên cạnh đó đường đi này phải là ngắn nhất

Bessie có thể đi từ 1 ô vuông sang 4 ô vuông khác kề cạnh

Dưới đây là một bản đồ ví dụ [với đá ('*'), cỏ ('.'), chuồng bò ('B'), và Bessie ('C') ở hàng 5,cột 6] và một bản đồ cho biết hành trình tối ưu của Bessie, đường đi được dánh dấu bằngchữ ‘m’

Bản đồ Đường đi tối ưu

Bessie ăn được 9 ô cỏ

Cho bản đồ, hãy tính xem có bao nhiêu ô cỏ mà Bessie sẽ ăn được trên con đường ngắnnhất trở về chuồng (tất nhiên trong chuồng không có cỏ đâu nên đừng có tính nhé)

Dữ liệu

 Dòng 1: 2 số nguyên cách nhau bởi dấu cách: R và C

 Dòng 2 R+1: Dòng i+1 mô tả dòng i với C ký tự (và không có dấu cách) như đã nói

Trang 10

VMUNCH.INP VMUNCH.OUT

5 6B *

C (1 <= C <= 100) cột Bessie ước gì có thể đếm được số khóm cỏ trên cánh đồng

Mỗi khóm cỏ trên bản đồ được đánh dấu bằng một ký tự ‘#‘ hoặc là 2 ký tự ‘#’ nằm kềnhau (trên đường chéo thì không phải) Cho bản đồ của cánh đồng, hãy nói cho Bessie biết

có bao nhiêu khóm cỏ trên cánh đồng

Ví dụ như cánh đồng dưới dây với R=5 và C=6:

 Dòng 1: 2 số nguyên cách nhau bởi dấu cách: R và C

 Dòng 2 R+1: Dòng i+1 mô tả hàng i của cánh đồng với C ký tự, các ký tự là ‘#’hoặc ‘.’

Kết quả

 Dòng 1: Một số nguyên cho biết số lượng khóm cỏ trên cánh đồng

Ví dụ

VBGRASS.INP VBGRASS.OUT

Trang 11

5 6.#

Cho hai từ x, y và một dãy hữu hạn các từ (w1, w2, , wk)

Phép toán p * q mang ý nghĩa là phép nối từ p với từ q, hay nói cách khác p * q là một từmới tạo thành bằng cách viết từ q phía sau từ p Ta cần kiểm tra xem hai từ x, y có thể

tương đương hóa bằng cách sử dụng các từ trong dãy cho trước không.

Ví dụ: Từ abba và ab có thể tương đương hóa bằng cách sử dụng các từ trong dãy: baaabad

aa badccaa cc Ta cần nối vào từ abba các từ: aa và badccaa, và nối vào từ ab các từbaaabad, cc và aa theo thứ tự Trong cả hai trường hợp, ta sẽ thu được cùng một từ:abbaaabadccaa

Yêu cầu

Cho biết từ x, từ y và dãy từ w1, w2, , wk Cho biết từ x và y có thể tương đương hóa bằngcách sử dụng các từ trong dãy cho trước được hay không? Nếu có thể, hãy tìm số lượngnhỏ nhất phép toán * cần sử dụng

Dữ liệu

 Dòng đầu tiên chứa một số nguyên dương k ≤ 40

 Dòng thứ hai và dòng thứ ba mô tả từ x và y

 K dòng tiếp theo mô tả dãy từ w1, w2, , wk, mỗi từ trên một dòng

 Mô tả của mỗi từ chứa một số nguyên cho biết độ dài của từ, theo sau bởi khoảngtrắng và một chuỗi thể hiện từ đó

 Mỗi từ chỉ bao gồm các chữ cái Latin in thường và có độ dài không vượt quá 2000

 Tổng độ dài các từ không vượt quá 5000

Kết quả

 Nếu không tồn tại lời giải, in ra 'NIE'

 Nếu tồn tại lời giải, in ra một số nguyên dương, là số lượng nhỏ nhất các phép toán

* cần để tương đương hóa hai từ x và y

Ví dụ

Trang 12

số phím khác tắt(nếu nó đang bật), các phím khác không đổi

Một phím dù đang bật hay tắt khi ta ấn nó thì phím này sẽ bật Các phím bị nó tác động sẽtắt nếu đang bật

Bạn được cho biết kết quả bấm của mỗi phím và 1 hiện trạng của các phím Hãy tìm 1 dãybấm liên tiếp 1 số ít nhất phím sao cho cuối cùng chỉ còn lại phím K, 1 <= K <= N, là bậtcác phím còn lại đều tắt

Trang 13

- Gồm 1 số nguyên duy nhất là số lần bấm phím ít nhất Nếu ko có đáp án ghi ra -1

0 1 0 1

2

Trang 14

Trong thành phố có m con đường, n đại lý bán kẹo (đánh số từ 1 đến n) Mỗi con đườngchỉ nối trực tiếp giữa 2 đại lý, và được ký hiệu bằng chỉ số của 2 đại lý mà nó nối Đồngthời, giữa 2 đại lý bất kỳ có không quá 1 con đường nối chúng

Ông Fruit-Jelly nghĩ rằng, ông ta sẽ quản lý nhân viên dễ hơn nếu xếp mỗi người tiếp thịtrên những hành trình có tính chất thứ tự Tức là những đại lý bán kẹo trên hành trình đóthỏa các điều kiện sau

Có đường nối trực tiếp giữa 2 đại lý liên tiếp nhau trên hành trình

Từ một đại lý bất kỳ trong hành trình có thể đi qua tất cả các đoạn đường trong hành trình

đó rồi trở về nơi xuất phát mà không đi qua đoạn đường nào quá một lần

Hành trình phân công cho mỗi nhân viên phải có ít nhất một đoạn đường chưa có nhânviên nào khác đi tiếp thị

Mỗi nhân viên chỉ di chuyển trên hành trình mà anh ta được phân công Hãy tính số lượngnhân viên tối đa mà ông Fruit-Jelly có thể xếp việc, và hành trình cụ thể mà mỗi ngườiđược xếp

Trang 15

đã có thể gửi tin tới u).

Thầy chủ nhiệm đang có một thông tin rất quan trọng cần thông báo tới tất cả các học sinh

Để tiết kiệm thời gian, thầy chỉ nhắn tin tới 1 số học sinh rồi sau đó nhờ các học sinh nàynhắn lại cho tất cả các bạn mà các học sinh đó có thể liên lạc được, và cứ lần lượt như thếlàm sao cho tất cả các học sinh trong lớp đều nhận được tin

Hãy tìm một số ít nhất các học sinh mà thầy chủ nhiệm cần nhắn

Input

- Dòng đầu là N, M (N <= 800, M là số lượng liên lạc 1 chiều)

- Một số dòng tiếp theo mỗi dòng gồm 2 số u , v cho biết học sinh u có thể gửi tin tới họcsinh v

Trang 16

Bạn hãy giúp Nuga chọn ra một bộ ba cao thủ thoả mãn yêu cầu của ông.

Dữ liệu:

Dòng đầu tiên ghi n là số cao thủ trên giang hồ (3 ≤ n ≤ 1000)

Tiếp theo là n dòng, mỗi dòng có n số A[i,j] = 1 là người i thắng j Dữ liệu luôn đảm bảoA[i,j] + A[j,i] = 1 A[i,i] = 0 với mọi i

Kết quả:

Ghi ra ba số nguyên A, B và C là thứ tự của ba cao thủ thoả mãn A thắng B, B thắng C và

C thắng A Trong trường hợp có nhiều cách lựa chọn, bạn chỉ cần chỉ ra một cách; trongtrường hợp không có cách lựa chọn thoả mãn yêu cầu, ghi ra ba số -1

Ví dụ:

Trang 17

Một tập S các máy tính được gọi là hệ thống an toàn nếu dù một máy tính bất kỳ bị tấncông (do sự tò mò của người dân :-(,cứ thích truy cập và hack những trang cấm :-( ) thìtrong số những máy tính còn lại,những máy tính thuộc tập S vẫn có thể truyền được dữliệu cho nhau Xác định số lượng lớn nhất có thể các máy tính của tập S

Trang 18

5 Vòng đua xe đạp

Mã bài: BIC

Một vòng đua xe đạp được tổ chức trên N thành phố, đánh số từ 1 đến N Có M đường nối(một chiều) giữa các thành phố Vòng đua bắt đầu từ thành phố 1 và kết thúc tại thành phố2

Trang 19

lại giữa mọi cặp đỉnh là nhỏ nhất Tức là: đạt giá trị nhỏ nhất Trong đo TA B

là thời gian đi từ đảo A đến đảo B Bạn hãy giúp nhà Vua tính toán chọn ra K trong số N

-1 tuyến phà để thay thế bằng cầu

Input

 Dòng thứ nhất ghi 4 số nguyên N, K, VP, VC trong đó VP là vận tốc nếu đi bằng phà

và VC là vận tốc nếu đi bằng cầu VP và VC có đơn vị là m/s

 N – 1 dòng tiếp theo, mỗi dòng ghi 3 số U V L thể hiện giữa đảo U và đảo V đã cómột tuyến phà, và khoảng cách giữa U và V là L mét

Trang 20

Chuyên đề: ĐƯỜNG ĐI NGẮN NHẤT

1 Bin Laden

Mã bài: BINLADEN

Trùm khủng bố Bin Laden trốn trong 1 căn hầm được đào sâu xuống mặt đất M tầng, mỗitầng có N phòng Các phòng được ngăn cách bằng các cửa rất khó phá Các phòng có cửaxuống phòng ngay phía dưới và 2 phòng ở 2 bên Từ trên mặt đất có N cửa xuống N phòngtầng -1 Bin Laden ở tầng dưới cùng (tầng -M) phòng thứ N (phòng ở bên phải nhất) Mỗicửa được làm bằng một kim loại khác nhau với độ dày khác nhau nên việc phá cửa cầnthời gian khác nhau

Bạn hãy tìm cách đi từ mặt đất xuống phòng của Bin Laden nhanh nhất không hắn thoátmất

Trang 21

có tổng số là 7 Mỗi lần, con xúc xắc có thể lăn về phía trái, phải, trước, sau Mỗi lần tiếpxúc với mặt bàn, ta mất một chi phí bằng số ghi trên ô mà xúc xắc đang nằm trên nhân với

số trên mặt của xúc xắc đang tiếp xúc với mặt bàn

Hãy tìm cách lăn từ một ô đến một ô khác trên mặt bàn để đạt chi phí nhỏ nhất

Dữ liệu

Trang 22

 Dòng đầu ghi 2 số M, N lần lượt là số dòng và số cột của lưới ô trên mặt bàn.

 M dòng sau, mỗi dòng ghi N số nguyên không quá 100 là số ghi trên các ô lưới củamặt bàn Các dòng được liệt kê theo thứ tự từ xa đến gần, các số trên mỗi dòng liệt

kê từ trái sang phải

 Dòng cuối ghi 2 cặp số lần lượt là tọa độ (dòng, cột) của ô bắt đầu và ô kết thúc

Nhiệm vụ của bạn là viết một chương trình để chọn ra một đường trong danh sách đề xuấttrên để xây dựng sao cho độ dài đường đi ngắn nhất giữa s và t là nhỏ nhất

đó qj là độ dài của đường hai chiều được đề xuất thứ j nối giữa hai nút uj và vj

Dữ liệu ra

Trang 23

Với mỗi bộ dữ liệu, ghi ra trên một dòng độ dài nhỏ nhất có thể của đường đi ngắn nhấtgiữa hai nút trọng yếu sau khi xây dựng xong một đường hai chiều từ danh sách đề xuất.Trường hợp không có đường đi từ s đến t, ghi -1.

Dữ liệu

Dòng đầu tiên ghi t là số test Với mỗi test, dòng đầu ghi K (0 ≤ K ≤ 10000) Dòng 2 ghi

N, 2 ≤ N ≤ 100 Dòng 3 ghi R, 1 ≤ R ≤ 10000 là số đường nối Mỗi dòng trong N dòng saughi 4 số nguyên S, D, L, T mô tả một con đường nối giữa S và D với độ dài L ( 1 ≤ L ≤100) và chi phí T (0 ≤ T ≤ 100) Lưu ý có thể có nhiều con đường nối giữa hai thành phố

Trang 24

3 5 2 0

5 4 3 2044

Bessie biết rằng cô ấy có thể xác định được C (1 <= C <= 8000) con đường hai chiều(được đánh số 1 C) kết nối tất cả các cánh đồng trong toàn bộ nông trại Ứng với mỗi conđường P_i là thời gian đi T_i (1 <= T_i <= 892) và nối 2 cánh đồng a_i và b_i (1 <= a_i <=P; 1 <= b_i <= P)

Bessie muốn tìm cánh đồng tốt nhất để ngủ thỏa mãn bình quân thời gian để đi đến F cánhđồng yêu thích của cô ta là nhỏ nhất

Ví dụ, hãy xem xét một nông trang được trình bày như một bản đồ dưới đây , nơi * 'd làcách đồng được yêu thích.Các số trong ngoặc là thời gian tương ứng để di chuyển giữa 2cánh đồng

** BEST 11 13 10 1 0 3 9 36/6 = 6.00 12 16 13 4 3 0 12 48/6 = 8.00

Kết quả tối ưu là cánh đồng 10

Dữ liệu

Trang 25

 Dòng 1: 3 số nguyên P,F,C

 Dòng 2 F+1: Dòng i+2 chứa 1 số Nguyên F_i

 Dòng F+2 C+F+1 : Mỗi dòng chứa 3 số Nguyên a_i, b_i, F_i mô tả 1 con đường 2chiều là thời gian di chuyển giữa chúng

Trang 26

6 Số phụ thuộc

Mã bài: SUMS

Cho tập số nguyên A gồm n phần tử, A={a1, a2, , an} Số k được gọi là phụ thuộc vào tập

A, nếu k được tạo thành bằng cách cộng các phần tử của tập A(mỗi phần tử có thể cộngnhiều lần)

Ví dụ cho A={2,5,7} Các số như 2, 4(2+2), 12(5+7 hoặc 2+2+2+2+2) được gọi là phụthuộc vào tập A Số 0 cũng gọi là phụ thuộc vào tập A

Yêu cầu:

Cho một dãy B, hãy kiểm tra xem bi có phải là số phụ thuộc vào tập A hay không

Dữ liệu:

 Dòng đầu tiên chứa số nguyên n (1 ≤ n ≤ 5000)

 N dòng tiếp theo chứa các phân tử của tập A, a1 < a2 < < an (1 ≤ ai ≤ 50000 )

TAKNIETAKTAKNIETAK

Trang 27

nối bởi quá 1 tuyến đường Trong N thành phố này thì thành phố 1 và thành phố N là 2trung tâm kinh tế lớn nhất nước và hệ thống đường đảm bảo luôn có ít nhất một cách đi từthành phố 1 đến thành phố N.

Tuy nhiên,cả 2 trung tâm này đều có dấu hiệu quá tải về mật độ dân số Vì vậy, đức vuaPeaceful quyết định chọn ra thêm một thành phố nữa để đầu tư thành một trung tâm kinh tếthứ ba Thành phố này sẽ tạm ngưng mọi hoạt động thường nhật, cũng như mọi luồng lưuthông ra vào để tiến hành nâng cấp cơ sở hạ tầng Nhưng trong thời gian sửa chữa ấy, phảibảo đảm đường đi ngắn nhất từ thành phố 1 đến thành phố N không bị thay đổi, nếu khôngnền kinh tế quốc gia sẽ bị trì trệ

Vị trí và đường nối giữa N thành phố được mô tả như một đồ thị N đỉnh M cạnh Hãy giúpnhà vua đếm số lượng thành phố có thể chọn làm trung tâm kinh tế thứ ba sao cho thànhphố được chọn thỏa mãn các điều kiện ở trên

Input

Dòng đầu tiên ghi 2 số nguyên dương N và M là số thành phố và số tuyến đường

Dòng thứ i trong số M dòng tiếp theo ghi 3 số nguyên dương xi, yi và di với ý nghĩa tuyếnđường thứ i có độ dài di và nối giữa 2 thành phố xi, yi

Trang 28

Mã bài: FLOYD

Cho đơn đồ thị vô hướng N đỉnh và M cạnh, trọng số các cạnh đều nguyên dương Có 2 loại câu hỏi :

0 u v : Cho biết đường đi ngắn nhất từ u tới v có độ dài là bao nhiêu

1 u v : Hãy chỉ ra 1 đường đi ngắn nhất từ u => v

Bài cơ bản này nhằm kiểm tra kỹ năng xây dựng các module chương trình con dành cho truy vết 1 cách hợp lý, sử dụng nhuần nhuyễn chương trình con, lời gọi hàm

Download test và solution tại đây

l là độ dài đoạn đường đó Biết rằng hai nút giao thông bất kì có không quá 1 đường hai

Cho hai nút giao thông s và f, hãy tìm hai đường đi nối giữa s với f sao cho hai trên haiđường không có cạnh nào được đi qua hai lần và tổng độ dài 2 đường đi là nhỏ nhất

Input

Trang 29

- Dòng đầu ghi N, M (N ≤ 100)

- Dòng thứ 2 ghi hai số s, f

- M dòng tiếp theo, mỗi dòng mô tả một đường gồm ba số nguyên dương u, v, l

Output

- Dòng đầu ghi T là tổng độ dài nhỏ nhất tìm được hoặc -1 nếu không tìm được

- Nếu tìm được, hai dòng sau, mỗi dòng mô tả một đường đi gồm: số đầu là số nút trênđường đi này, tiếp theo là dãy các nút trên đường đi bắt đầu từ s, kết thúc tại f

Chú ý:Phạm vi tính toán trong vòng Longint.

Mỗi tuyến đường như vậy sẽ xuất phát từ một thành phố, qua một số thành phố (không điqua thành phố nào 2 lần) rồi quay về nơi xuất phát Nếu tính chi phí vận chuyển trung bìnhtrên từng tuyến đường thì chi phí chi ra cho đợt khuyến mãi này sẽ không nhỏ nên giámđốc cũng muốn các tuyến đường này thỏa điều kiện tổng độ dài đường đi chia cho tổng sốcon đường trong tuyến đường đó (gọi là chi phí của tuyết đường) là nhỏ nhất

Cho một mạng lưới vận chuyển hàng của công ty MCA hãy tìm ra tuyến đường thích hợpnhất (thỏa cả 2 điều kiện trên) cho đợt khuyến mãi Xuất ra chi phí của tuyến đường tìmđược

Input

Trang 30

Dòng đầu tiên ghi hai số nguyên N và M là số thành phố và số con đường trong mạng lưới.( 1 ≤ N ≤ 100, 1 ≤ M ≤ 9000 )

M dòng tiếp theo, mỗi dòng ghi ba số nguyên a b c với ý nghĩa có đường đi một chiều từ ađến b với độ dài là c ( 1 ≤ c ≤ 223 )

u1, e1, u2, ,ui, ei, ui+1, , uk-1, ek-1, uk, ek, u1

Trong đó u1, u2, , uk là các máy tính khác nhau trong mạng, ei – kênh truyền tin từ máy ui

đến máy ui+1 (i = 1, 2, , k-1), ek là kênh truyền tin từ máy uk đến máy u1 Một kênh truyềntin trong mạng được gọi là kênh xung yếu nếu như bất cứ mạch vòng nào của mạng cũngđều chứa nó

Yêu cầu: Hãy xác định tất cả các kênh xung yếu của mạng đã cho.

Input

Dòng đầu tiên chứa 2 số nguyên dương n và m

Dòng thứ i trong số m dòng tiếp theo mô tả kênh nối thứ i bao gồm hai số nguyên dương

ui, vi cho biết kênh nối thứ i cho phép truyền tin từ máy ui đến máy vi

Các số trên cùng một dòng được ghi cách nhau bởi dấu cách

Output

Trang 31

Dòng đầu tiên ghi số nguyên k là số lượng kênh xung yếu trong mạng đã cho Ghi k = -1nếu mạng không chứa kênh xung yếu.

Nếu k>0 thì mỗi dòng trong số k dòng tiếp theo ghi thông tin về một kênh xung yếu tìmđược theo qui cách mô tả giống như trong file dữ liệu vào Đồng thời các kênh được in ratheo thứ tự từ điển

Cho một đa đồ thị vô hướng N đỉnh, M cạnh, mỗi cạnh có 1 trọng số nguyên dương

Yêu cầu: Hãy chọn ra một số cạnh sao cho đồ thị tạo bởi N đỉnh và các cạnh được chọnnày đảm bảo liên thông giữa 3 đỉnh 1, 2, 3 và tổng trọng số của các cạnh được chọn là nhỏnhất Dữ liệu vào đảm bảo có phương án

 Dòng đầu tiên gồm 2 số nguyên: N, M

 M dòng tiếp theo: dòng thứ i gồm 3 số nguyên dương U V C tương ứng là cạnh nàynối liền đỉnh U với đỉnh V, trọng số là C

Trang 32

Bạn được biết chi phí ước tính để xây dựng một số con đường và bạn hãy chọn một số conđường để xây dựng để theo đúng ý nhà vua biết rằng luôn tồn tại ít nhất một phương ánxây dựng đường sao cho 4 thành phố đặc biệt liên thông.

Input

Dòng đầu tiên ghi số nguyên dương N là số lượng các thành phố.( 1 ≤ N ≤ 100 )

Dòng thứ hai ghi 4 số nguyên là số hiệu của 4 thành phố đặc biệt

Trong một số dòng tiếp theo, mỗi dòng ghi 3 số nguyên u, v và c với ý nghĩa muốn xâydựng một con đường hai chiều nối trực tiếp giữa 2 thành phố u và v thì chi phí là c ( 1 ≤ c

Trang 33

4 3 3

3 2 2

Chuyên đề: CHU TRÌNH EULER

1 Thám hiểm mê cung

Một mê cung gồm có N phòng và M hành lang nối các phòng, giữa hai phòng bất kì có không quá một hành lang nối chúng

Một người muốn khám phá mê cung, anh ta sẽ xuất phát từ một phòng và đi dọc theo tất cảcác hành lang sao cho mỗi hành lang được đi qua đúng một lần, rồi lại trở về vị trí xuất phát Mỗi hành lang có một giá trị c cho biết khi đi qua nó thì năng lượng nhà thám hiểm

sẽ cộng thêm với c (c có thể âm hay dương) Nhà thám hiểm bắt đầu xuất phát với năng lượng bằng 0, anh ta sẽ chết nếu sau khi đi hết một hành lang nào đó mà mức năng lượng nhỏ hơn 0

Yêu cầu: Hãy giúp nhà thám hiểm tìm ra một hành trình an toàn thỏa mãn các yêu cầu đã

Trang 34

điện, nếu làng i là làng thứ k phân biệt được thăm trên hành trình và k ≤ wi, làng i sẽ trả wi

– k euros cho bưu điện Nếu k > wi , bưu điện đồng ý trả k - wi euros cho ngôi làng Ngoài

ra, bưu điện còn trả bưu tá một euro khi đi qua mỗi con đường trên hành trình

Có n ngôi làng, được đánh số từ 1 đến n Bưu điện được đặt ở ngôi làng số một, do đóhành trình cần bắt đầu và kết thúc tại ngôi làng này Mỗi ngôi làng được đặt ở giao điểmcủa hai, bốn, hoặc tám con đường Có thể có nhiều đường nối giữa hai ngôi làng Conđường có thể là một vòng nối một ngôi làng với chính nó

Yêu cầu: Viết chương trình xác định một hành trình đi qua mỗi ngôi làng và mỗi conđường ít nhất một lần, sao cho tổng lợi nhuận của bưu điện là lớn nhất (hay tổng thiệt hại

là bé nhất)

Dữ liệu

 Dòng đầu tiên chứa 2 số nguyên n, m, cách nhau bởi khoảng trắng; n (1 ≤ n ≤ 200),

là số ngôi làng và m là số con đường

 Mỗi dòng trong số n dòng sau chứa một số nguyên dương Dòng thứ i+1 chứa số wi,

0 ≤ wi ≤ 1000, xác định chi phí được trả bởi làng i

 Mỗi dòng trong số m dòng sau chứa hai số nguyên dương cách nhau bởi khoảngtrắng, mô tả một con đường nối hai ngôi làng

Kết qủa

 Dòng đầu tiên chứa số nguyên dương k, độ dài của hành trình

 Dòng thứ hai theo chứa k+1 số cho biết các ngôi làng được thăm theo thứ tự trênhành trình, cách nhau bởi khoảng trắng, trong đó v1=vk+1=1

Ví dụ

NKPOS.INP NKPOS.OUT

6 717410205

Trang 35

3 6

1 6

1 3

Ngày đăng: 20/07/2015, 16:56

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w