Предмет: Информатика, автор: renger100

на с++
Напишите программу, которая строит списки смежности для каждой вершины графа на основе его матрицы смежности.

Входные данные
В первой строке вводится количество вершин графа 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

Ответы

Автор ответа: mike070149
1

Ответ:

#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;

               }

       

}

Объяснение:

Автор ответа: askripchak
2

Ответ:

#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;

}

Объяснение:

Похожие вопросы
Предмет: Математика, автор: mashasheludche