CCCPaste
global nodes;

function DFS(graph, visited, start)
    visited(1, start) = 1;
    mprintf("%d ", start);
    for i=1:nodes
        if graph(start, i) == 1 & visited(1, i) == 0 then
            DFS(graph, visited, i);
        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 : ");

visited = zeros(1, nodes);
DFS(graph, visited, startNode);