global nodes;
function BFS(graph, start)
visited = zeros(1, nodes);
queue = list();
queue($+1) = start;
visited(1, start) = 1;
while(size(queue) ~= 0)
node = queue(1);
mprintf("%d ", node);
queue(1) = null();
for i=1:nodes
if graph(node, i) == 1 & visited(1, i) == 0 then
queue($+1) = i;
visited(1, i) = 1;
end
end
end
endfunction
function [from, to]=split(data)
splitted = evstr(strsplit(data, " "));
from = splitted(1, 1);
to = splitted(2, 1);
endfunction
nodes = input("How many nodes ? ");
graph = zeros(nodes, nodes);
edges = input("How many edges ? ");
disp("Enter " + string(edges) + " edges (from-to) separated by a white space:");
for i=1:edges
in = input("", "string");
[from, to] = split(in);
graph(from, to) = 1;
graph(to, from) = 1;
end
startNode = input("Enter initial node : ");
BFS(graph, startNode);