на с++
Напишите программу, которая строит списки смежности для каждой вершины графа на основе его матрицы смежности.
Входные данные
В первой строке вводится количество вершин графа 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
Answers & Comments
Ответ:
#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;
}
}
Объяснение:
Ответ:
#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;
}
Объяснение: