求图论程序
来源:百度知道 编辑:UC知道 时间:2024/06/25 07:35:22
深度优先和广度优先遍历下面这张图,要求用以下四种方法实现:
1. 邻接矩阵+DFS (程序名称:matrixDFS.pas)
2. 邻接表+DFS (程序名称:tableDFS.pas)
3. 邻接矩阵+BFS (程序名称:matrixBFS.pas)
4. 邻接表+BFS (程序名称:tableBFS.pas)
从0开始遍历,程序的输出形式如:01357462 (这个是某一DFS的结果)
用Pascal语言,不要C的.
直接输出
输入(文件输入)已经编好.
01100000
00011000
00001000
00000101
00010110
00000001
00000001
00000000
1. 邻接矩阵+DFS (程序名称:matrixDFS.pas)
2. 邻接表+DFS (程序名称:tableDFS.pas)
3. 邻接矩阵+BFS (程序名称:matrixBFS.pas)
4. 邻接表+BFS (程序名称:tableBFS.pas)
从0开始遍历,程序的输出形式如:01357462 (这个是某一DFS的结果)
用Pascal语言,不要C的.
直接输出
输入(文件输入)已经编好.
01100000
00011000
00001000
00000101
00010110
00000001
00000001
00000000
狂汗 深度搜索和广度搜索的动态和静态实现...
静态好说,动态的估计要百行以上...
太闹人了点...
现写也没时间...
Program sdsf1;
Const
inf='sdsf1.in';
ouf='sdsf1.out';
Maxn=1000;
Var
visited:Array[1..Maxn]Of Boolean;
g:Array[1..Maxn,1..Maxn]Of Longint;
ans:Array[1..Maxn]Of Longint;
i,j,n,e,v,x,y,p:Longint;
Procedure dbf(k:Longint);
Var
t:Longint;
Begin
ans[p]:=k;
Inc(p);
If (p>n) Then Exit;
visited[k]:=true;
For t:=n DownTo 1 Do
If(g[k,t]<>-1) And( Not visited[t])
Then dbf(t)
{visited[k]:=False;
Dec(p); }
End;
Begin
FillChar(g,SizeOf(g),255);
FillChar(visited,SizeOf(visited),False);
p:=1;
Assign(Input,Inf);
Assign(Output,Ouf);
Reset(Input);