Tải bản đầy đủ (.doc) (8 trang)

bài tập lý thuyết đồ thị - pascal năng cao

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (84.91 KB, 8 trang )

Bài Tập đồ thò Trang 1
Bài tập Thực hành:
Bài 1. Viết một chương trình tìm các thành phần liên thông của đồ thò
+ Yêu cầu:
- Xác đònh tính liên thông
- Các thành phần liên thông
- Minh họa bằng đồ họa
dữ liệu vào: là từ file text có tên DOTHI.INP
-hàng đầu ghi số N (số đỉnh đồ thò), và số K (số cạnh của đồ thò).
-K hàng tiếp theo hàng thứ i chứa 2 số u
i
và v
i
mô tả cạnh thứ i tương ứng với đỉnh u
i
và v
i
của đồ
thò.
Kết qủa : Ra màn hình như sau :
-Dòng đầu : Số thành phần liên thông.
-Các dòng tiếp theo:
+Thành phần thứ 1: x1 x2 .....
+Thành phần thứ 2: x1 x2 .....
+........................
Bài 2.
Có N thành phố đánh số thứ tự tứ 1 đến N, giữa các thành phố có thể có hoặc không có đường đi.
Đường đi có thể là một chiều hoặc hai chiều. Tìm tất cả đường đi từ thành phố x đến thành phố y cho
trước.
dữ liệu vào: là từ file text có tên THPHO.INP
-hàng đầu ghi số N (số thành phố), và số K (số đường đi trực tiếp giữa 2 thành phố).


- Dòng thứ hai ghi hai số x và y
-K hàng tiếp theo hàng thứ i chứa 2 số u
i
và v
i
mô tả đừng thứ i tương ứng nối hai thành phố u
i

v
i
.
Kết qủa: Ra màn hình
-Dòng đầu tổng số đường đi.
-Các dòng tiếp theo, mỗi dòng là danh sách các đỉnh trên đường đi, bắt đầu từ x kết thúc tại y.
Bài 3. “ Otomat”. Một máy đổi thẻ giải trí tự động có m cửa dùng để đổi thẻ. Có các thẻ mã số từ 1 đến n.
Nếu ta bỏ thẻ có mã i vào 1 cửa nào đó thì máy thu thẻ đó và cho ra 1 thẻ có mã số trong khoãng 1 ... n.
Người ta tiết lộ cho bạn biết rằng máy hành động theo thông tin ghi trong tệp văn bản có tên
OTOMAT.INP như sau:
- Các giá trò n m (dòng đầu tiên)
- Một bảng kích thước n x m (n dòng m cột)
phần tử nằm trên dòng i, cột j của bảng này là phần tử máy sẽ cho ra nếu ta bỏ thẻ mã i vào cửa j.
Yêu cầu:
a- Với mỗi thẻ số hiệu x cho trước hãy tìm cách nhanh nhất để thu được thẻ có số hiệu lớn nhất.
b- Với mỗi cặp thẻ x, y cho trước hãy tìm cách nhanh nhất (có thể nếu được) để dùng thẻ x thu được
thẻ y.
Lời giải cần hiển thò trên màn hình theo mẫu sau:
Bỏ thẻ x vào cửa y sẽ thu được thẻ z
Bỏ thẻ z vào cửa .....
Bài 4. Mạng máy tính:
Biên soan: Võ Viết Trí

Bài Tập đồ thò Trang 2
Một mạng máy tính gồm n máy đánh số từ 1 đến n, và m kênh truyền tin một chiều giữa một số cặp
máy được đánh số từ 1 đến m. Mạng máy tính là thông suốt (nghóa là từ một máy bất kỳ có thể truyền tin
đến tất cả các máy còn lại hoặc là theo kênh nối trực tiếp hoặc thông qua các máy trung gian). Một máy
trong mạng được gọi là máy chẳn (máy lẻ) nếu số kênh truyền tin trực tiếp từ đó đến các máy khác trong
mạng là số chẳn (số lẻ).
Giả sử S và T là hai máy lẻ trong mạng. Bằng cách đảo ngược hướng truyền tin một số kênh trong
mạng, hãy biến đổi mạng đã cho thành mạng (không nhất thiết phải thông suốt) mà trong đó 2 máy S và T
trở thành máy chẳn mà không thay đổi tính chẳn lẻ của các máy khác.
Dữ liệu vào được cho trong file kiểu Text có tên NET.INP theo qui cách:
- Dòng đầu tiên chứa 2 số n, m được ghi cách nhau bởi dấu cách ( n < 1 0 1 )
- Dòng thứ hai chứa 2 số nguyên dương S T được ghi cách nhau bởi dấu cách là chỉ số của 2 máy lẻ
trong mạng.
- Dòng thứ i trong số m dòng tiếp theo ghi 2 số nguyên U
i
, V
i
cho biết kênh thứ i truyền trực tiếp từ
máy U
i
đến máy V
i
( i = 1, 2, ... , m )
Kết quả ghi ra màn hình và ra file kiểu Text với tên NET.OUT theo qui cách:
- Dòng đầu ghi số lượng kênh cần thay đổi hướng truyền q
- Mỗi dòng trong số q dòng tiếp theo ghi chỉ số của kênh cần đảo ngược hướng truyền tin.
Ví dụ:
NET.INP NET.OUT
6 9 3
1 6

1
1 2 7
2 3 9
3 4
4 1
4 6
6 3
2 5
5 3
5 6
Bài 5. “Lưới đen trắng”
Cho 1 lưới các ô vuông, mỗi ô có màu đen hoặc trắng. Cho một mẫu cắt hình chữ nhật là một phần
của lưới này. Mẫu cắt gồm m dòng và n cột (m, n < 100) Hãy cho biết:
a- Số vùng màu đen, số vùng màu trắng có trong mẫu cắt. Biết rằng 2 ô có chung cạnh và cùng màu
là nằm trong một vùng.
b- hãy đổi màu (đen thành trắng hoặc trắng thành đen) cho 1 vùng nào đó để sau khi đổi ta có vùng
mới với diện tích lớn nhất .
Kết quả ghi ra màn hình.
dữ liệu vào: là từ file Text LUOI.INP có cấu trúc:
- Dòng đầu là hai số nguyên dương m, n. Từ dòng thứ hai trở đi đến dòng m+1, mỗi dòng chứa n số (0
hoặc 1) cách nhau bởi ít nhất 1 ký tự trắng. Số 0 tương ứng cho ô màu đen, số 1 tượng trưng cho ô màu
trắng.
VD:
LUOI.INP Dữ liệu ra: ghi lên màn hình
5 5 Số vùng màu trắng: 2
0 1 0 1 0 Số vùng màu đen: 3
0 0 0 1 1 Sau khi đổi màu 1 vùng
Biên soan: Võ Viết Trí
Bài Tập đồ thò Trang 3
1 1 1 1 1 Diện tích vùng lớn nhất đạt được: 24

0 0 0 0 0 Màn của vùng lớn nhất: Đen.
0 0 0 0 0
Bài 6. “ Mạng đường sắt”
Do nhu cầu cấp bách trong xây dựng kinh tế của một quốc gia, người ta cần sửa chữa gấp rút lại
một mạng lưới đường sắt ( hai chiều) đã có sẳn lưu thông giữa N thành phố ( đánh số thứ tự 1,2,...,N). Biết
rằng chi phí cho sữa chữa chỉ phụ thuộc vào chiều dài của đoạn đường củ. Hãy tìm một phương án sữa
chữa ít tốn kém nhất mà vẫn đảm bảo là chỉ sử dụng đường mới sữa mà vẫn lưu thông giữa các thành phố
như trứơc khi sửa.
dữ liệu vào: là từ file text có tên DUONGSAT.INP
-hàng đầu ghi số N (số thành phố), và số K (số đường nối trực tiếp giữa hai thành phố).
-K hàng tiếp theo hàng thứ i chứa 3 số u
i
, v
i
và d
i
mô tả có đường nối thứ i giữa 2 thành phố u
i

v
i
với chiều dài là d
i
.
Kết qủa: Ra màn hình.
-Dòng tiên là tổng số chiều dài cần sửa chữa.
-Các dòng tiếp theo là chỉ số của các đường cần sửa.
Bài 7.
Cho một bảng N dòng, M cột các số nguyên không âm. Từ một ô (i,j) ta có thể đi sang ô chung cạnh
nếu giá trò của ô này không lớn hơn giá trò của ô (i,j). Một đường đi từ ô (i,j) tới ô (k,l) theo cách đi trên gọi là

một đường đi xuống. Hãy lập trình giải quyết các bài toán sau:
1. Cho trước hai ô (i,j) và (k,l). Hãy tìm một đường đi xuống từ ô (i,j) tới ô (k,l) (nếu có) với tổng giá
trò T các ô trên đường đi là bé nhất.
2. Cho trước ô (i,j) hãy chỉ ra một đường đi xuống qua nhiều ô nhất xuất phát từ ô (i,j).
Dữ liệu trong file TEXT có tên BANG.INP với cấu trúc như sau:
- Dòng đầu là hai số N, M (bé hơn hay bằng 100)
- N dòng tiếp theo, dòng thứ i chứa tương ứng dòng thứ i của bảng.
- Dòng tiếp theo chứa 4 số i, j, k và l tương ứng với dữ liệu câu 1.
- Dòng cuối chứa 2 số i và j tương ứng với dữ liệu câu 2.
Kết quả ghi ra file TEXT có tên BANG.OUT với cấu trúc như sau:
- Dòng đầu là: “KET QUA CAU 1:”
- Dòng thứ 2 ghi giá trò T.
- Dòng thứ 3 ghi “KHONG” nếu không có đường đi xuống từ ô (i,j) tới ô (k,l), ngược lại đưa ra dãy
các ô trên đường đi bắt đầu tư ô (i,j) và kết thúc tại ô (k,l).
- Dòng thứ 4 ghi ra: “KET QUA CAU 2”
- Dòng thứ 5 ghi ra đường đi tìm được quy cách như dòng thứ 3.
Các số trên cùng một dòng trong các file BANG.INP và BANG.OUT cách nhau bởi ít nhất một
khoảng trắng.
Bài 8.
Cho một lưới các ô vuông mà tọa độ góc trái dưới là (0,0), tọa độ góc phải trên là (100,100) gồm
10.000 ô vuông. Trong lưới này ta đặt N hình vuông khác nhau kích thước đều bằng 5x5, các đỉnh của các
hình vuông này có tọa độ nguyên và các cạnh hình vuông song song với các trục tọa độ và hai cạnh song
song của hai hình vuông khác nhau cách nhau ít nhất 1 đơn vò. Để đi từ điểm (0,0) đến điểm (100,100), có
thể có hai cách đi:
- Cách thứ nhất: đi theo các cạnh của các ô của lưới, các mốc đi qua là các đỉnh.
Biên soan: Võ Viết Trí
Bài Tập đồ thò Trang 4
- Cách thứ hai: đi theo các đỉnh của lưới, từ một đỉnh này đến một đỉnh khác theo đoạn nối hai đỉnh
đó.
Đường đi từ ô (0,0) đến ô (100,100) chỉ được chung với N hình vuông đã cho nhiều nhất 1 điểm.

Dữ liệu được cho bởi file TEXT có tên INPUT.DAT trong đó dòng thứ nhất ghi số N, các dòng tiếp
theo mỗi dòng ghi hai số x và y mà (x,y) là tọa độ của đỉnh trái dưới của hình vuông, 0 ≤ x,y ≤ 95.
1. Tìm đường đi ngắn nhất từ (0,0) đến (100,100) theo cách thứ nhất. Kết quả thông báo ra file TEXT
có tên KQ2.DAT các đỉnh lần lượt trên hành trình trong một dòng, dòng tiếp theo thông báo độ dài.
2. Tìm được đi ngắn nhất từ (0,0) đế (100,100) theo cách thứ hai. Kết quả thông báo tiếp ra file TEXT
có tên KQ1.DAT các đỉnh lần lượt trên hành trình trong một dòng, dòng tiếp theo thông báo độ dài.
Bài 9. “Lập lòch bay”
Có N thành phố (N ≤ 50). Hàng ngày từ thành phố i đến thành phố j có các chuyến bay vào các giờ
nào đó, các giờ này tính thống nhất theo một đồng hồ chung cho cả N thành phố. Tại thành phố i, nếu ở lại
đó một giờ thì tốn một lượng tiền nào đó. Một người muốn bay từ thành phố u đến thành phố v và khởi
hành vào giờ T. Thời gian chuyển máy bay xem như không đáng kể.
Dữ liệu được cho bở file TEXT có tên MB.DAT trong đó dòng thứ nhất ghi các số N, u, v, T. Với 1 ≤
i,j ≤ N, dòng thứ (i-1)N+j+1 ghi như sau:
- Nếu i≠j thì số đầu tiên là thời gian bay từ i đến j, số thứ hai là giá vé bay từ i đến j, tiếp theo là
các giờ có chuyến bay từ i đến j, nếu dòng này rỗng có nghóa là không có đường bay từ i đến j.
- Nếu i=j thì ghi chi phí cho 1 giờ tại i.
Tất cả các số đều nguyên dương, số chỉ giờ tính từ 1 đến 24
Hãy tìm cho người đó một hành trình từ u đến v theo các yêu cầu sau đây:
1. Thời gian bay nhanh nhất. Kết quả thông báo ra file TEXT với tên KQ.DAT, các dòng đầu ghi
hành trình, mỗi dòng một chặng theo quy cách như sau (quy ước ngày 1 là ngày khởi hành):
...........................
4 → 3 đi 5 giờ ngày 6 đến 7 giờ ngày 8.
3 → 10 đi 11 giờ ngày 8 đến 15 giờ ngày 8.
...........................
dòng tiếp theo thông báo giờ bay từ u, giờ đến v, thời gian bay (chú ý rằng hành trình có thể kéo dài nhiều
ngày).
2. Chi phí ít nhất. Kết quả thông báo tiếp ra file KQ2.DAT, các dòng cho hành trình tương tự như trên,
dòng tiếp theo ghi chi phí, giờ bay từ u, giờ đến v, thời gian bay.
Bài 10. “Vẽ Đường”
Một lưới giao thông đường hai chiều giữa n đòa điểm được cho bởi ma trận A[i,j] trong đó A[i,j] =1

nếu đòa điểm i nối với đòa điểm j, còn A[i,j] =0 trong trường hợp ngược lại. Trên mỗi đoạn đường có vạch ở
giữa để phân cách. Người ta cần vẽ lại vạch này trên mỗi đoạn đường bằng các xe vẽ vạch, mỗi đoạn một
lần. Mỗi một xe khi đã bắt đầu vẽ vạch không nâng được cần lên cho đến khi kết thúc. Mỗi một xe chỉ sử
dụng một lần.
Hãy lập trình xác đònh số lượng ít nhất các xe phải sử dụng để vẽ lại vạch cho tất cả đoạn đường, mỗi
xe hãy chỉ ra lộ trình mà nó phải thực hiện.
Dữ liệu cho trong File Text có tên nhập từ bàn phím, trong đó dòng đầu là n, n dòng tiếp theo là chứa
bảng A. Kết quả đưa ra màn hình (Quy cách đưa kết quả ra tùy chọn).
Bài 11. “Tô Màu”.
Biên soan: Võ Viết Trí
Bài Tập đồ thò Trang 5
Cho một bảng gồm các hình vuông, kích thước MxN (M,N<=100). Trong đó có một số ô đen, còn
lại là ô trắng. Hãy tô màu tất cả các ô trắng bằng hai màu xanh và đỏ sao cho trên mỗi dòng cũng như trên
mỗi cột số lượng các ô màu xanh và số lượng các ô màu đỏ chênh lệch nhau không quá 1.
Dữ liệu vào: là file Text TOMAU.INP có cấu trúc như sau:
- Dòng đầu tiên là 2 số M, N
- M dòng tiếp theo mỗi dòng gồm N số (0 hoặc 1)
Dòng thứ i cột j mô tả cho ô vuông ở hàng i cột j. Số 0 tương ứng cho ô trắng, số 1 tương ứng cho ô
đen.
Kết quả: file TOMAU.OUT hoặc màn hình
Cấu trúc như sau:
Một bảng số gồm M dòng và N cột. Số ở hàng i cột j mô tả cho ô tương ứng (i,j). Số 2 tương ứng cho
màu xanh, số 3 tương ứng cho màu đỏ. (có thể cho hiển thò trên màn hình đồ họa bảng màu tương ứng).
Ví dụ:
TOMAU.INP TOMAU.OUT
6 4 3 1 2 1
0 1 0 1 2 1 1 1
0 1 1 1 1 3 1 2
1 0 1 0 3 2 1 1
0 0 1 1 1 2 1 3

1 0 1 0 2 1 3 1
0 1 0 1
Bài 12. Lâu đài.
Hình bên dưới là lưới ô vuông kích thước MxN (M=4, N=7) biểu diễn một lâu đài.
Ta gọi một phòng là gồm 1 hoặc nhiều ô vuông chung cạnh được bao chung quanh bởi các bức tường.Hãy
viết chương trình tính :
1. Lâu đài có bao nhiêu phòng ?
2. Phòng lớn nhất là bao nhiêu ô vuông ?
3. Bức tường nào cần loại bỏ để có một phòng càng nhiều ô vuông càng tốt.
1 2 3 4 5 6 7
1
2
3
4
->
Dữ liệu vào: File text tên LAUDAI.INP có cấu trúc như sau:
Biên soan: Võ Viết Trí
đxxđxđxxđxđ
(Mũi tên trong hình chỉ bức tường bò loại
bỏ)

×