/** Base BFS algorithm returns "Yes" or "No". */ program name bfs_yes_no; author "Some clever book :o)"; version 1.0; define BFSNode extends Node attributes string name; boolean visited; ; BFSEdge extends Edge (BFSNode); BFSGraph extends Graph (BFSEdge); var BFSGraph graph; BFSNodes start, finish; function bfs_search_from (BFSNodes nodes) returns boolean; var BFSNodes friends; do nodes set_visited(true); if nodes get_intersection_fake(finish) >= 1 then return true; friends := graph get_edges() get_edges_source_is(nodes) get_nodes_destination() get_visited_is(false); if friends is_empty() then return false; return bfs_search_from(friends); enddo procedure main(); do writeln(get_error_text(graph load_from_file("D:\\Projects\\Rocnikovy projekt\\070427\\graphs\\BGSGraph3.dat"))); start := graph get_nodes() get_name_is("start"); finish := graph get_nodes() get_name_is("end"); if start get_size() < 1 | finish get_size() < 1 then terminate("Chybne urceni zacatku nebo cile hledani!"); graph get_nodes() set_visited(false); if bfs_search_from(start) then terminate("Existuje alespon jedna cesta ze startu do cile."); terminate("Mezi zadanymi vrcholy neexistuje zadna cesta."); enddo