Форум программистов, компьютерный форум CyberForum.ru

Эйлеров цикл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вставить после каждого слова в предложении запятую, а в конце предложения стоит точка http://www.cyberforum.ru/cpp-beginners/thread382068.html
вставить после каждого слова в предложении запятую, а в конце предложения стоит точка.
C++ Рекурсивно найти сумму нечетных элементов до заданного n Добрый вечер! Необходимо рекурсивно найти сумму нечетных элементов до заданного n, даже не знаю с чего начать!... http://www.cyberforum.ru/cpp-beginners/thread382055.html
Функция с переменным числом параметров C++
Добрый вечер и заранее огромное спасибо тому, кто поможет! Сам пытался, но бесполезно, задание во вложении
C++ Найти среднее арифметическое последовательности чисел, если известен признак конца списка параметров (0)
Добрый вечер и заранее огромное спасибо тому, кто уделит время! Сам я разве что видоизменял конструкцию, но так до конца и не разобрался, задание во вложении...
C++ Русский текст без танцев с бубнами http://www.cyberforum.ru/cpp-beginners/thread382049.html
Доброго времени суток. Решил раз и навсегда понять, как выводить русские буквы на консоль без всяких танцев с system("chcp ...") или SetConsoleCP. Интересует вариант, при котором исходник неизменно хранится в UTF-8, и компилируется на разных платформах. В частности интересуют *nix, cygwin, mingw. Пробовал такой вариант: #include <iostream> #include <string> int main( ) { ...
C++ Найти сумму последовательности чисел, если известно их количество Доброго времени суток тому, кто поможет! Сам я разве что видоизменял конструкцию, но так до конца и не разобрался, задание во вложении... подробнее

Показать сообщение отдельно
Temoffey
20 / 40 / 0
Регистрация: 21.11.2010
Сообщений: 96

Эйлеров цикл - C++

11.11.2011, 22:56. Просмотров 1362. Ответов 1
Метки (Все метки)

Есть программа:
Код
def euler_circuit(G):
    EP=[]  # Эйлеров цикл - массив вершин.
 
    #возвращает локальный замкнутый цикл    
    def euler(v):
        cycle={}
        while (G.degree(v)>0):  #пока не оказались в "безвыходной" вершине
            w=G.neighbors(v)[0] # берем $w$ --- первого попавшегося "соседа" $v$ 
            cycle[v]=w          # записываем ребро $(v,w)$ в $cycle$ и стираем его из графа
            G.delete_edge(v,w)
            v=w                 # повторяем все с вершиной $w$
        return cycle    
 
    # добавляет цикл к эйлерову пути
    def add_cycle():        
        print EP,"+",
        if len(EP)>0: # ищем вершину, к которой можно добавить цикл
            for i in range(0,len(EP)):
                if G.degree(EP[i])>0:
                    v=EP[i]
                    break
        else: # Подготавливаем пока пустой EP к присоединению цикла 
            v=G.nodes()[0] # выбираем первую попавшуюся вершину
            EP.append(v)   # и добавляем ее в EP
            i=0    
        c=euler(v)
        print c,"-->",    
        while c: # пока не перенесли все содержимое цикла   
            i=i+1; EP.insert(i,c[v]) #вставляем очередную вершину в EP        
            w=c[v] #переходим к следующей
            del c[v] #удаляя из цикла вставленную.
            v=w
        print EP
 
 
    #Проверка, необходимых и достаточных условий существования
    for v in G.nodes(): 
        if (G.degree(v) % 2)<>0: print "No Euler path!"; return
 
    while (G.number_of_edges()>0):
        add_cycle()          # добавляем цикл к эйлерову пути
 
    print EP
    return EP
Поясните плз в каком она компиляторе сделается и если можно переведите её в Си если не сложно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru