Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace click2
- {
- class Program
- {
- public static int n;
- public static int[,] g = new int[20, 20];
- public static int[] res = new int[20];
- public static int[] q = new int[20];
- public static int N_res, i_end;
- static int ReadIntNumber(string stringForUser, int left, int right)
- {
- bool okInput = false;
- int number = 0;
- do
- {
- Console.WriteLine(stringForUser);
- try
- {
- string buf = Console.ReadLine();
- number = Convert.ToInt32(buf); // могут возникнуть исключения FormatException, OverflowException
- if (number >= left && number <= right) okInput = true;
- else
- {
- Console.WriteLine("Некорректное значение! Повторите ввод. ");
- okInput = false;
- }
- }
- catch (FormatException)
- {
- Console.WriteLine("Некорректное значение! Повторите ввод. ");
- okInput = false;
- }
- catch (OverflowException)
- {
- Console.WriteLine("Некорректное значение! Повторите ввод. ");
- okInput = false;
- }
- } while (!okInput);
- return number;
- }
- static void rec(int ii, int N)
- {
- int i, j;
- if (N > N_res)
- {
- for (i = 0; i < i_end; i++)
- res[i] = q[i];
- N_res = N;
- }
- if (ii == n)
- return;
- for (i = ii; i < n; i++)
- {
- for (j = 0; j < i_end; j++)
- if (g[q[j], i] == 0)
- break;
- if (j == i_end)
- {
- q[i_end++] = i;
- rec(ii + 1, N + 1);
- i_end--;
- }
- rec(ii + 1, N);
- }
- }
- static void Main(string[] args)
- {
- n = ReadIntNumber("Введите количество вершин: ", 1, 20);
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- g[i, j] = ReadIntNumber("Введите элемент матрицы смежности: ", 0, 1);
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- if (g[i, j] == 1) g[j, i] = 1;
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- Console.Write(g[i, j] + " ");
- Console.WriteLine();
- }
- for (int i = 0; i < n; i++)
- {
- i_end = 0;
- rec(i, 0);
- }
- int count = 0;
- Console.Write("Клика: ");
- for (int i = 0; i < N_res; i++)
- {
- Console.Write(res[i] + 1 + " ");
- count++;
- }
- Console.WriteLine();
- Console.WriteLine("Максимальная клика: " + count);
- Console.Read();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement