Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
7 / 6 / 1
Регистрация: 18.02.2022
Сообщений: 30

Граф Андрей

11.07.2022, 12:37. Показов 1815. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан ориентированный невзвешенный граф. Отсортируйте топологически его вершины.

Вход. В первой строке содержатся количество вершин n (1 ≤ n ≤ 105) и количество рёбер m (1 ≤ m ≤ 105) в графе. В следующих m строках перечислены рёбра графа, каждое из которых задаётся парой чисел – номерами начальной и конечной вершины.

Выход. Вывести любую топологическую сортировку графа в виде последовательности номеров вершин. Если граф невозможно топологически отсортировать, то вывести -1.


Пример входа
----------------------------------------------------
Пример выхода

6 6
1 2
3 2
4 2
2 5
6 5
4 6
-----------------------------------------------------
4 6 3 1 2 5
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.07.2022, 12:37
Ответы с готовыми решениями:

Андрей и порталы
Андрей вот-вот опоздает на школьный этап ВсОШ. К счастью, недавно в его городе появились порталы. Город, в котором живет Андрей, можно...

Андрей добродушный геймер
Андрей очень любит играть в одну никому не известную игру. В процессе игры герой Андрея выполняет задания и получает взамен определенные...

Андрей и машина времени
Прошу помочь в решении задачи, не могу понять, как отделить четные от нечентных и в отдельности сложить. Задача: Представьте, что...

4
11.07.2022, 18:35

Не по теме:

Название теме дали в промежутках между чтением "Войны и мира"?

0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
11.07.2022, 20:05
thyrex,

Не по теме:

там все-таки князь

1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
13.07.2022, 19:38
Ivan_bebrovich, не всякий подобный граф может быть отсортирован... Только бесконтурный.

Добавлено через 1 час 11 минут
Как вариант:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def get_src(graph):
    vert=[]
    for p in graph:
        vert.append(p[0])
        vert.append(p[1])
    for a in set(vert):
        c=0
        for p in graph:
            if p[1]==a:
                c+=1
        if c==0:
            return a
    return None
 
def top_sort(g):
    
    curr=get_src(g)
    if curr is None:
        return None
 
    w=1
    res=[]
    
    while True:
 
        res.append((curr,w))
        
        if len(g)==1:
            res.append((g[0][1],w+1))
            break
        
        g=[p for p in g if p[0] != curr and p[1] != curr]
        
        curr=get_src(g)
        
        w+=1
    
    return res
   
def task():
    _=int(input())
    m=int(input())
    g=[]
    for _ in range(m):
        a,b=map(int,input().split())
        g.append((a,b))
        
    q=top_sort(g)
    if q is None:
        print(-1)
    else:
        print(q)
        
print(top_sort(graph))
Вывод - список пар (новый_номер , старый_номер).

Добавлено через 4 часа 27 минут
Опс! В моем алгоритме есть ошибка! Приношу извинение. Переделаю!
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
14.07.2022, 12:52
Вот более правильное решение:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Построить список вершин
 
def get_verts(graph):
    vert=[]
    for p in graph:
        vert.append(p[0])
        vert.append(p[1])
    return set(vert)    
 
# Дать вершину-источник
 
def get_src(graph):
 
    for a in get_verts(graph):
        c=0
        for p in graph:
            if p[1]==a:
                c+=1
        if c==0:
            return a
    return None
 
# Собственно перенумерация
 
def top_sort(g):
    
    verts=get_verts(g)
    
    curr=get_src(g)
    if curr is None:
        return None
 
    w=1
    res=[]
    
    while True:
 
        if len(g)==0:
            for v in verts:
                res.append((v,w))
                w+=1
            break    
 
        res.append((curr,w))
 
        g=[p for p in g if p[0] != curr and p[1] != curr]
 
        verts=verts.difference(set((curr,)))
 
        curr=get_src(g)
        
        w+=1
    
    return res
   
def task():
    _=int(input())
    m=int(input())
    g=[]
    for _ in range(m):
        a,b=map(int,input().split())
        g.append((a,b))
        
    q=top_sort(g)
    if q is None:
        print(-1)
    else:
        print(q)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2022, 12:52
Помогаю со студенческими работами здесь

Андрей очень любит число 2009
Андрей очень любит число 2009. Он утверждает, что если возвести любое девятизначное число в степень 2009, то получится очень красивое...

Андрей снова играет в свою любимую игру «World of Brawlcraft» вместо подготовки к олимпиаде
Андрей снова играет в свою любимую игру «World of Brawlcraft» вместо подготовки к олимпиаде. На этот раз в качестве приза он получил...

Реализовать граф от 1 до 10: граф связный; -число от 1 до 10, могут повторяться
Реализовать граф от 1 до 10: граф связный; -число от 1 до 10, могут повторяться. Добавить рандом W (y) = random {i = 1, n-1; j = 2;...

Андрей играет в новую игру, в которой герой сражается с монстрами
Андрей играет в новую игру, в которой герой сражается с монстрами. Герой наносит монстру удары. Один удар отнимает у монстра одну единицу...

Graph - переход и выход их граф. режима. Смещение граф.обьектов.
Пишу курсовую работу, возникла проблема с переходами между режимами. Итак, текст курсовой за 600 строк, поэтому попробую описать основу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru