#include #include #include using namespace leda; graph G; bool check_path(list& F){ node v; edge e; node_map M(G); forall_nodes(v,G){ M[v]=0; } forall(e,F){ v=source(e); M[v]+=1; v=target(e); M[v]+=1; } forall_nodes(v,G){ if(M[v] % 2 == 1){ return false; } } return true; } void partition(){ // Benutzen Sie diese Vorlage für Ihre Funktion. } int main() { bool weg= false; GraphWin gw(G, "Partition"); list F; gw.set_node_label_type(no_label); gw.set_edge_direction(undirected_edge); gw.set_edge_width(2); gw.set_node_width(15); gw.display(); gw.message("Bitte geben Sie einen einfachen, ungerichteten Graphen ein und druecken Sie anschliessend auf Done."); // Hier wird der Graph eingelesen gw.edit(); gw.del_message(); gw.redraw(); gw.message("Bitte markieren Sie alle Kanten des geschlossenen weges und druecken Sie anschlissend auf Done"); // Hier wird die Kantenmenge F eingelesen while(weg == false){ weg = true; gw.edit(); F = gw.get_selected_edges(); gw.deselect_all(); weg = check_path(F);// Hier wurde überprüft, ob die eingelesene Kantenmenge einen geschlossenen Weg dartsellt if(weg == false){ gw.del_message(); gw.message("Die gewaehlte Kantenmenge bildet keinen geschlossenen Weg, versuchen Sie es noch einmal."); } } gw.del_message(); gw.redraw(); gw.edit(); return 0; }