Как построить из списка вершин и дуг матрицу смежности?
Даны вершины : 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 шт):
Если вы вводите дуги вручную, то можете запрашивать либо:
-строку, содержащую список дуг - подобно вашему " 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; //если граф ненаправленный
-либо по отдельности начальную и конечную вершину дуги, и так же устанавливаете соотв. элементы матрицы смежности