Почему выводится в ответ мусор, то есть большие отрицательные числа и как исправить

У меня есть задача - вывести матрицу смежности для простого ориентированного графа. Мне во входном файле(entrance.txt) в первой строке первое число - это число вершин моего графа(n), а в первой строке второе число - это количество пар ребер моего графа(m). Дальше в следующих строках мне даны просто ребра, которые есть в моем графе. Мне нужно это все считать с входного файла, построить матрицу смежности для этого графа, и вывести эту матрицу смежности в выходной файл(escape.txt). Входной файл:
3 4 // 3 - число вершин, 4 - количество пар ребер
//все, что ниже, это ребра
1 2
2 3
3 1
3 2
Выходной файл:
0 1 0
0 0 1
1 1 0
Я написал программу, там я создал динамический массив, в который добавил все ребра моего графа, и создал двумерный динамический массив, в котором будет матрица смежности. С помощью цикла while я заполнил матрицу смежности, т.е. двумерный динамический массив. После цикла while идет цикл for и там я проверяю - если у меня элемент матрицы смежности равен 1, то я просто иду к следующему элементу. В противном случае - я записываю туда 0. Этот цикл for нужен, так как в цикле while я заполнил двумерный массив только 1. Однако мне в выходной файл, выводит мусор:
-842150451 -842150451 -842150451
-842150451 -842150451 -842150451
-842150451 -842150451 -842150451
Он мне показывает 4 предупреждения:
"==": результат выражения не используется; вы хотели использовать "="?
"==": результат выражения не используется; вы хотели использовать "="?
Использование неинициализированной памяти "*adjacency_matrix[i]"
Использование неинициализированной памяти "adjacency_matrix[i][j]"
Вот мой код:

#include <iostream>
#include <fstream>
using namespace std;

ifstream in("entrance.txt");
ofstream out("escape.txt");


int main() {
    int n;
    in >> n;

    int m;
    in >> m;

    int i = 1;
    int j = 1;
    int k = 0;

    int counter = 0;

    int** adjacency_matrix = new int* [n];
    for (int i = 0; i < n; i++) {
        adjacency_matrix[i] = new int[n];
    }

    int* array_ribs = new int [m * 2];

    for (int i = 0; i < m * 2; i++) {
        in >> array_ribs[i];
    }

    while (counter <= m * n) {
        if (array_ribs[k] == i && array_ribs[k + 1] == j) {
            adjacency_matrix[i - 1][j - 1] == 1;
            j++;
            if (j == n) {
                j = 1;
                i++;
            }
        }
        else {
            k = k + 2;
            if (k == m * 2) {
                k = 0;
                j++;
                if (j == n) {
                    j = 1;
                    i++;
                }
            }
        }

        counter++;
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (adjacency_matrix[i][j] == 1) {
                continue;
            }
            else {
                adjacency_matrix[i][j] == 0;
            }
        }
    }




    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            out << ' ' << adjacency_matrix[i][j];
        }
        out << endl;
    }



    delete[] array_ribs;

    for (int i = 0; i < n; i++) {
        delete[] adjacency_matrix[i];
    }


    delete[] adjacency_matrix;



    return 0;
}

Что не так, и как это исправить?


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