Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 11.10.2022
Сообщений: 48
1

От матрицы смежности к спискам смежности

12.08.2023, 12:24. Показов 799. Ответов 2
Метки с++ (Все метки)

Author24 — интернет-сервис помощи студентам
Задача №112628. Списки смежности из матрицы
Напишите программу, которая строит списки смежности для каждой вершины графа на основе его матрицы смежности.

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

Выходные данные
Программа должна вывести списки смежности для каждой вершины графа в порядке возрастания их номеров. Номера вершин в каждом списке разделены пробелами. Нумерация начинается с единицы. Если из вершины не выходит ни одно ребро, вместо списка нужно вывести число 0.

Примеры
входные данные
5
0 1 1 1 0
1 0 1 0 1
1 1 0 1 0
0 0 0 0 0
0 1 0 1 0
выходные данные
2 3 4
1 3 5
1 2 4
0
2 4
почему мой код не даёт правильный ответ и тем самым даёт частичное решение


C++
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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;  // Считываем размерность матрицы
    vector<vector<int>> Matrix(n, vector<int>(n));
 
    // Заполняем матрицу Matrix
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> Matrix[i][j];
        }
    }
 
    vector<vector<int>> List(n);
 
    // Заполняем вектор List на основе матрицы Matrix
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (Matrix[i][j] == 1) {
                List[i].push_back(j + 1);
            }
        }
    }
 
    // Выводим результат
    for (int i = 0; i < n; ++i) {
        cout << List[i].size();
        for (auto j = 0u; j < List[i].size(); ++j) {
            cout << " " << List[i][j];
        }
        cout << endl;
    }
 
    return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.08.2023, 12:24
Ответы с готовыми решениями:

Преобразование списка смежности в матрицу смежности
Помогите пожалуйста, нужно разработать алгоритм преобразования списка смежности в матрицу...

Матрица Смежности в Список Смежности
Привет . Как можно конвертировать матрицу смежности в список смежности ? Я понимаю что код можно...

Матрицы инцидентнности и смежности
Помогите написать программу, на входе дан текстовый файл вида: n m v1 u1 v2 u2 ............

Построение матрицы смежности
Задаем поле с единицами и нулями (где 1-пустая клетка, 0-препятствие) #include &quot;stdafx.h&quot;...

Генерация матрицы смежности
написал код: #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; ...

2
32 / 21 / 16
Регистрация: 29.07.2023
Сообщений: 53
12.08.2023, 20:39 2
Лучший ответ Сообщение было отмечено Kaiser3621 как решение

Решение

ты каждый раз выводишь длину строки, ее нужно выводить лишь тогда , когда строка пуста:
C++
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
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;  // Считываем размерность матрицы
    vector<vector<int>> Matrix(n, vector<int>(n));
 
    // Заполняем матрицу Matrix
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> Matrix[i][j];
        }
    }
 
    vector<vector<int>> List(n);
 
    // Заполняем вектор List на основе матрицы Matrix
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (Matrix[i][j] == 1) {
                List[i].push_back(j + 1);
            }
        }
    }
 
    // Выводим результат
    for (int i = 0; i < n; ++i) {
        if (List[i].empty()) { // Если список смежных вершин не пуст
            cout << List[i].size() << endl;
    
        }
            else{
            for (auto j = 0u; j < List[i].size(); ++j) {
                cout << List[i][j] << " ";
            }
 
        cout << endl;
    }
    }
 
    return 0;
}
0
 Аватар для SmallEvil
3719 / 2648 / 761
Регистрация: 29.06.2020
Сообщений: 9,800
12.08.2023, 21:35 3
Kaiser3621, Salo__Salo, зачем создавать этот список смежности и ту же матрицу, если просто нужно вывести данные ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main(){
    using std::cin; using std::cout; using std::endl;
    int n, v, w, edges, vertex;
    cin >> n;
    for(v = 0; v!=n; ++v){
        for(w = 0, edges = 0; w!=n; ++w){
            cin >> vertex;
            if (vertex){
                cout << w+1 << ' ';
                ++edges;
            }
        }
        edges ? cout << endl : cout << '0' << endl; 
    }
}
1
12.08.2023, 21:35
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2023, 21:35
Помогаю со студенческими работами здесь

Графы, матрицы смежности
Вывести матрицы смежности, инцидентности, весов для графа, представленного на рисунке....

Построение матрицы смежности и инцидентности
День добрый. Сразу к делу, есть задание построить матрицы смежности и инцидентности неоргфара. ...

Из матрицы смежности сделать ориентированный граф
Какаю библиотеку использовать что би нарисовать граф?Возможно есть готов код ,буду очень...

Из матрицы смежности получить матрицу инцидентности
Здравствуйте! столкнулся с проблемой преобразования из матрицы смежности в матрицу инцидентности. Я...

Граф в виде матрицы смежности и количества вершин
Переписывайте тексты в тело сообщения!!!! Всем здравствуйте. Помогите доделать код программы....

Как вывести матрицу смежности из матрицы инцидентности
int main() { int mass, x, y, i, j; int max = 0; do { cout &lt;&lt; &quot;Enter the...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru