Как построить из списка вершин и дуг матрицу смежности?

Даны вершины : 1,2,3,4,5 И дуги, к примеру : (1:2 , 2:3 , 3:4 , 4:4) Необходимо из этих данных сделать матрицу смежности, код который сейчас есть:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp29
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите n");
            int n = int.Parse(Console.ReadLine());
            int[] A = new int[n];
            Console.WriteLine("Введите массив А");
            for (int i = 0; i < n; i++)
                A[i] = int.Parse(Console.ReadLine());


            Console.WriteLine("Введите количесвто cтолбцов (m)");
            int k = int.Parse(Console.ReadLine());
            Console.WriteLine("Введите количесвто строк (n)");
            int l = int.Parse(Console.ReadLine());
            int[,] B = new int[k, l];
            int u;
            u = k - 1;
            int[,] C = new int[u, u];
            Console.WriteLine("массив B");
            for (int e = 0; e < k; e++)
            {
                for (int g = 0; g < l; g++)
                    B[e, g] = int.Parse(Console.ReadLine());

            }
            Console.WriteLine("Вершины");
            for (int i = 0; i < n; i++)
                Console.Write(A[i] + " ");

            Console.WriteLine();

            Console.WriteLine("Дуги");

            for (int e = 0; e < k; e++)
            {
                for (int g = 0; g < l; g++)
                    Console.Write(B[e, g] + "\t");
                Console.WriteLine();
            }
            Console.WriteLine("Матрица смежности");
            for (int e = 0; e < k; e++)
            {
                for (int g = 0; g < l; g++)
                {
                    for (int i = 0; i < u; i++)
                    {
                        for (int j = 0; j < u; j++)
                        {
                            C[e - 1, g - 1] = 1;

                            Console.Write(C[e, g] + "\t");
                        }
                    }
                }
            }

        }
    }
}

Подскажите пожалуйста, как можно построить матрицу смежности. n- количество вершин , A[]- список вершин k - столбцы, l-строки, сделано это для удобства чтение дуг, примерно такой вывод: 1 2 2 3 B - это как раз матрица со списком k,l С- это для того чтобы сделать матрицу смежности
Пример исходных данных:
Вводим вершины: 1,2,3,4,5,6
Вводим дуги: 1,2; 1,4; 2,3; 3,3; 4,2; 5,2; 5,6; 6,6;
Должна получится матрица смежности:
0 1 0 1 0 0 0
0 0 1 0 0 0 0
0 0 1 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 1 0
0 0 0 0 0 1 0
0 0 0 0 0 0 0


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

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

Если вы вводите дуги вручную, то можете запрашивать либо:

-строку, содержащую список дуг - подобно вашему " 1,2; 1,4; 2,3; 3,3; 4,2; 5,2; 5,6; 6,6". В этом случае делите (Split) строку по разделителям ";", затем каждую из получившихся подстрок по разделителю ",", преобразуете в пару чисел i, j и устанавливаете

 С[i-1, j-1] = 1;
 C[j-1, i-1] = 1; //если граф ненаправленный

-либо по отдельности начальную и конечную вершину дуги, и так же устанавливаете соотв. элементы матрицы смежности

→ Ссылка