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

Cài đặt thuật toán xác định các thành phần liên thông bằng Pascal

4 802 14
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cài đặt thuật toán xác định các thành phần liên thông bằng Pascal
Trường học Unknown
Chuyên ngành Computer Science
Thể loại Bài báo
Năm xuất bản Unknown
Thành phố Unknown
Định dạng
Số trang 4
Dung lượng 43 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

CÀI ĐẶT THUẬT TOÁN TÌM CHU THÀNH PHẦN LIÊN THÔNG BẰNG CHƯƠNG TRÌNH PASCAL Thành phần liên thông.. Chương trình xác định các thành phần liên thông.. Dữ liệu được lấy từ tệp TPLT.INP là ma

Trang 1

CÀI ĐẶT THUẬT TOÁN TÌM CHU THÀNH PHẦN LIÊN THÔNG BẰNG CHƯƠNG TRÌNH PASCAL

Thành phần liên thông.

Chương trình xác định các thành phần liên thông

Dữ liệu được lấy từ tệp TPLT.INP là ma trận :

Trong đó, n số đỉnh, m là

số cạnh Sau khi lấy dữ liệu, chương trình sẽ xác định các thành phần liên thông và lưu vào tệp TPLT.OUT có cấu trúc:

k

Trong đó, k số tplt

x1,x2… là các đỉnh tplt

thứ 1

y1,y2… là các đỉnh tplt

thứ 2

z1,z2… là các đỉnh tplt

thứ k

Trang 2

Chương trình: (TPLT.PAS)

program lien_thong;

const maxv =100;

type link =^node;

node= record

v:integer;

next:link;

end;

var m,n,v,u,d,d1:integer;

ke:array[1 maxv] of link;

t:link;

a:array[1 maxv] of boolean;

f,f1:text;

PROCEDURE input;

var i,x,y:integer;

begin

assign(f1,'tplt.inp');reset(f1);

while not eof(f1) do

begin

readln(f1,n,m);

for i:=1 to n do

ke[i]:=nil;

for i:=1 to m do

begin

readln(f1,x,y);

new(t);t^.v:=x; t^.next:=ke[y]; ke[y]:=t;

new(t);t^.v:=y; t^.next:=ke[x]; ke[y]:=t;

end;

end;

close(f1);

End;

Trang 3

procedure tplt;

var i:integer;

Begin

d1:=0;

for i:=1 to n do

begin

t:=ke[i]; a[i]:=false; d:=0;

while (t<>nil) do

begin

inc(d);

if (a[t^.v]=false)and(d<>0) then a[t^.v]:=true;

t:=t^.next;

end;

if d=0 then

inc(d1);

end;

End;

PROCEDURE output;

var i,d:integer;

begin

assign(f,'tplt.out'); rewrite(f);

write(f,' ',d1);

for i:=1 to n do

begin

t:=ke[i];

a[i]:=false; d:=0;

while (t<>nil) do

begin

inc(d);

if (a[t^.v]=false) and (d<>0) then begin

a[t^.v]:=true;

Trang 4

write(f,' ',t^.v); end;

t:=t^.next;

end;

if d=0 then

begin

writeln(f); write(f,' ',i); end;

end;

close(f);

End;

BEGIN

input;

tplt;

output;

END

File vào ví dụ: (TPLT.INP)

5 4

1 2

2 3

1 3

4 5

File ra tương ứng: (TPLT.OUT)

2

1 2 3

4 5

Ngày đăng: 03/07/2013, 21:50

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w