Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ?uses System.Collections.Generic;
- const
- MaxN = 1000;
- function BFS(startPoint: integer;
- targetPoint: integer;
- params graph: Array[,] of integer): boolean;
- begin
- var queue: Queue<integer>;
- queue := new Queue<integer>;
- var isFound: boolean;
- isFound := false;
- var visited: Array[0..MaxN] of boolean;
- queue.Enqueue(startPoint);
- while queue.Count <> 0 do
- begin
- var current: integer;
- current := queue.Dequeue();
- visited[current] := true;
- if current = targetPoint then
- begin
- isFound := true;
- break;
- end;
- for var i := 0 to Length(graph, 1) - 1 do
- begin
- if (graph[current, i] = 1) and (not visited[i]) then
- queue.Enqueue(i);
- end;
- end;
- Result := isFound;
- end;
- function DFS(startPoint: integer;
- targetPoint: integer;
- params graph: Array[,] of integer): boolean;
- begin
- var stack: Stack<integer>;
- stack := new Stack<integer>;
- var isFound: boolean;
- isFound := false;
- var visited: Array[0..MaxN] of boolean;
- stack.Push(startPoint);
- while stack.Count <> 0 do
- begin
- var current: integer;
- current := stack.Pop();
- visited[current] := true;
- if current = targetPoint then
- begin
- isFound := true;
- break;
- end;
- for var i := 0 to Length(graph, 1) - 1 do
- begin
- if (graph[current, i] = 1) and (not visited[i]) then
- stack.Push(i);
- end;
- end;
- Result := isFound;
- end;
- begin
- var graph: array[,] of integer;
- graph := new integer[10, 10];
- for var i := 0 to Length(graph, 0) - 1 do
- for var j := 0 to Length(graph, 1) - 1 do
- graph[i,j] := 0;
- var startPoint, targetPoint: integer;
- startPoint := 0;
- targetPoint := 5;
- Writeln(BFS(startPoint,targetPoint,graph));
- graph[0,3] := 1;
- graph[3,5] := 1;
- Writeln(BFS(startPoint,targetPoint,graph));
- end.
Advertisement