最后更新时_(d)(x)2011-12-07 18:04:56
辅导评Q?a target="_blank" rel="nofollow">暑期集训
在线咨询
1Q假讄定的有向图是用邻接表表示Q作入的是图中顶点个?/span>n和边的个?/span>m, 以及囄m条边。在下面的程序中Q我们用readdataE序q程输入囄信息Qƈ建立该图的邻接表Q利?/span>topolE序q程获得图中点的一个拓扑序列?/span>
PROGRAM topol_order(input , output) ;
CONST maxn=20 ;
TYPE nodeptr=^nltype ;
nltype=RECORD num : integer ; link : nodeptr END ;
chtype=RECORD count : integer ; head : nodeptr END ;
VAR ch : ARRAY [1 .. maxn] OF chtype ; m , n , top : integer ;
PROCEDURE readdata ;
VAR i , j , u , v : integer ; p : nodeptr ;
BEGIN
write (′input vertex number n= ?; readln (n) ;
write (′input edge number m= ?; readln(m) ;
FOR i:=1 TO n DO BEGIN ch[i].count:= 0; ch[i].head:=NIL END;
writeln(′input edges :?;
FOR j:= 1 TO m DO
BEGIN write( j :3 , ? ? ; readln( u , v ) ; new( p ) ;
ch[v].count:=ch[v].count+1; p^.num:=v; (1) ___ ; (2) __; END
END ;
PROCEDURE topol ;
VAR i, j, k: integer; t: nodeptr ;
BEGIN
top:= 0 ;
FOR i := 1 TO n DO
IF ch[i].count=0 THEN BEGIN ch[i].count := top ;top := i END;
i:= 0 ;
WHILE (3) ___ DO
BEGIN (4) __; (5) __ ; write(j : 5) ;i:= i + 1 ;t:=ch[j].head ;