Как вывести матрицу смежности из матрицы инцидентности

int main()
{
    int mass[50][50], x, y, i, j;
    int max = 0;
    do {
        cout << "Enter the number of vertices and the number of edges: \n";
        cin >> x >> y;
    } while (x <= 1 || x >= 50 && y <= 1 || y >= 500);
    cout << "Enter the matrix : \n";
    for (i = 0; i < x; i++)
    {
        for (j = 0; j < y; j++)
        {
            cin >> mass[i][j];
        }
    }
    cout << "\n";
    // тут должен быть вывод
    cout << "\n";
    system("pause");
    return 0;
}

Как из введённых данных построить матрицу инцидентности


Ответы (1 шт):

Автор решения: MBo

Переберите столбцы матрицы инцидентности.

Каждый столбец содержит две единицы в строках p и q - значит в матрице смежности нужно поставить единицы в ячейках A[p][q] и A[q][p]

int ones[2], cnt;

for (i = 0; i < x; i++)
    {  
        cnt = 0; 
        for (j = 0; j < y; j++)
        {
            if mass[i][j] == 1
                ones[cnt++] = j;
        }
        A[ones[0]][ones[1]] = 1;
        A[ones[1]][ones[0]] = 1;
    }
→ Ссылка