123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- // Класс для графа
- public class Graph
- {
- // Список вершин в графе
- public List<Vertex> Vertices { get; set; }
- // Конструктор графа
- public Graph()
- {
- Vertices = new List<Vertex>();
- }
- // Конструктор графа через матрицу
- public Graph(int[,] matrix)
- {
- Vertices = new List<Vertex>();
- int n = matrix.GetLength(0);
- // Инициализируем список вершин (номера вершин от 1 до количества вершин вкл.)
- for (int i = 1; i <= n; i++)
- {
- Vertex vertex = new Vertex(i);
- Vertices.Add(vertex);
- }
- // Добавить сторону в соответствии с матрицей
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (matrix[i, j] != 0)
- {
- // откуда, куда, расстояние
- Edge edge = new Edge(Vertices[i], Vertices[j], matrix[i, j]);
- // Привязываем полученное ребро к ребрам вершины-откуда
- // (добавляем это ребро в список ребёр вершины-откуда)
- Vertices[i].AddEdge(edge);
- }
- }
- }
- }
- public void AddVertex(Vertex vertex)
- {
- Vertices.Add(vertex);
- }
- public Vertex GetVertexByNumber(int number)
- {
- for (int i = 0; i < Vertices.Count; i++)
- {
- if (Vertices[i].Number == number)
- {
- return Vertices[i];
- }
- }
- return null;
- }
- }
|