Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- namespace Example
- {
- public class Graph
- {
- private class Node //вложенный класс для скрытия данных и алгоритмов
- {
- private int[,] array; //матрица смежности
- public int this[int i, int j] //индексатор для обращения к матрице смежности
- {
- get
- {
- return array[i, j];
- }
- set
- {
- array[i, j] = value;
- }
- }
- public int Size //свойство для получения размерности матрицы смежности
- {
- get
- {
- return array.GetLength(0);
- }
- }
- private bool[] nov; //вспомогательный массив: если i-ый элемент массива равен
- //true, то i-ая вершина еще не просмотрена; если i-ый
- //элемент равен false, то i-ая вершина просмотрена
- public void NovSet() //метод помечает все вершины графа как непросмотреные
- {
- for (int i = 0; i < Size; i++)
- {
- nov[i] = true;
- }
- }
- //конструктор вложенного класса, инициализирует матрицу смежности и
- // вспомогательный массив
- public Node(int[,] a)
- {
- array = a;
- nov = new bool[a.GetLength(0)];
- }
- public Node Delete(int a, int b)
- {
- for (int i = 0; i < this.Size; i++)
- for (int j = 0; j < this.Size; j++)
- if ((i == a && j == b) || (j == a && i == b))
- {
- this[i, j] = 0;
- this[j, i] = 0;
- }
- return this;
- }
- } //конец вложенного клаcса
- private Node graph; //закрытое поле, реализующее АТД «граф»
- public Graph(string name) //конструктор внешнего класса
- {
- using (StreamReader file = new StreamReader(name))
- {
- int n = int.Parse(file.ReadLine());
- int[,] a = new int[n, n];
- for (int i = 0; i < n; i++)
- {
- string[] mas = file.ReadLine().Split(' ');
- for (int j = 0; j < n; j++)
- {
- a[i, j] = int.Parse(mas[j]);
- }
- }
- graph = new Node(a);
- }
- }
- //метод выводит матрицу смежности на консольное окно
- public void Show()
- {
- using (StreamWriter output = new StreamWriter(@"C:\Users\CryDone\Desktop\practice\output.txt"))
- {
- for (int i = 0; i < graph.Size; i++)
- {
- for (int j = 0; j < graph.Size; j++)
- {
- output.Write("{0,4}", graph[i, j]);
- }
- output.WriteLine();
- }
- }
- }
- public void ToDelete(int a, int b)
- {
- graph.Delete(a, b);
- }
- }
- class Program
- {
- static void Main()
- {
- Graph g = new Graph(@"C:\Users\CryDone\Desktop\practice\input.txt");
- Console.Write("Укажите вершины a и b:\n");
- int a, b;
- a = int.Parse(Console.ReadLine()) -1;
- b = int.Parse(Console.ReadLine()) -1;
- g.ToDelete(a,b);
- g.Show();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement