
На с++ Напишите программу, которая строит списки смежности для каждой вершины графа на основе его
матрицы смежности. Входные данные В первой строке вводится количество вершин графа 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

Ответы на вопрос

Ответ:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n, k=0;
cin >> n;
int a[n+1][n+1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[j][i];
}
}
for (int i = 1; i <= n; i++) {
if (i>=2) cout << endl;
k=0;
for (int j = 1; j <= n; j++) {
if (a[j][i] == 1){
cout << j << " ";
k++;
}
}
if (k==0) cout << k;
}
return 0;
}
Объяснение:



Ответ:
#include <iostream>
using namespace std;
int main()
{
int n,k=0,p=1;
cin>>n;
int x[n*n];
int a[n*n];
for (int j=0; j<n*n; j++)
{
cin>>x[j];
if (x[j]==1)
a[j]=(j%n)+1;
else
a[j]=0;
}
for (int j=0; j<n*n; j++)
{
if (a[j]!=0)
cout<<a[j]<<" ";
else
{
if (j%n==0)
{
for (int i=j; i<j+n; i++)
if (a[i]==0)
p++;
if (j==0)
p--;
if (p==n)
cout<<0;
p=0;
}
}
k++;
if (k%n==0)
cout<<endl;
}
}
Объяснение:



Вот пример программы на C++, которая строит списки смежности для каждой вершины графа на основе его матрицы смежности:
cpp#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
// Создаем матрицу смежности и списки смежности
vector<vector<int>> adjacencyMatrix(N, vector<int>(N));
vector<vector<int>> adjacencyLists(N);
// Вводим матрицу смежности
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
cin >> adjacencyMatrix[i][j];
}
}
// Строим списки смежности
for (int i = 0; i < N; ++i) {
for (int j = 0; j < N; ++j) {
if (adjacencyMatrix[i][j] == 1) {
adjacencyLists[i].push_back(j + 1); // +1 для нумерации с 1
}
}
}
// Выводим списки смежности
for (int i = 0; i < N; ++i) {
for (int j = 0; j < adjacencyLists[i].size(); ++j) {
cout << adjacencyLists[i][j];
if (j < adjacencyLists[i].size() - 1) {
cout << " ";
}
}
if (adjacencyLists[i].empty()) {
cout << "0"; // Если из вершины не выходит ни одного ребра
}
cout << endl;
}
return 0;
}
Вы можете скомпилировать и запустить эту программу, введя количество вершин графа и матрицу смежности в соответствии с вашими требованиями. Программа выведет списки смежности для каждой вершины в порядке возрастания их номеров.


Похожие вопросы







Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili