Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- bool is_that_complete(int **matrix, int v)
- {
- for (int i = 0;i<v; i++)
- {
- for (int j = 0; j < v; j++)
- {
- if (i == j) continue;
- if (matrix[i][j] == 0) return false;
- }
- }
- return true;
- }
- bool is_that_cycle(int **matrix, int v)
- {
- int licznik = 0;
- int *odwiedzone = new int[v];
- for (int i = 0; i < v; i++)
- {
- odwiedzone[i] = -1;
- }
- int s = 0;
- for (int i = 0; i < v; i++)
- {
- for (int j = 0; j < v; j++)
- {
- if (matrix[s][j] == 1 && odwiedzone[j] == -1)
- {
- odwiedzone[j] = 1;
- matrix[s][j] = 0;
- matrix[j][s] = 0;
- licznik++;
- s = j;
- j = 0;
- break;
- }
- }
- }
- bool tr = true;
- for (int i = 0; i <v; i++)
- {
- if (odwiedzone[i] == -1)
- {
- tr = false;
- break;
- }
- }
- delete[] odwiedzone;
- if (licznik == v && s == 0 && tr == true) return true;
- else return false;
- }
- int main()
- {
- int n, v;
- scanf("%d", &n);
- for (int k = 0; k < n; k++)
- {
- //start of allocation
- scanf("%d", &v);
- int **matrix = new int*[v];
- for (int i = 0; i < v; i++)
- {
- matrix[i] = new int[v];
- }
- int *colors = new int[v];
- for (int i = 0; i < v; i++)
- {
- colors[i] = 0;
- }
- char *mat = new char[v*v + 1];
- scanf("%s", mat);
- for (int i = 0; i < v*v; i++)
- {
- if (mat[i] == '1') matrix[i / v][i%v] = 1;
- else matrix[i / v][i%v] = 0;
- }
- //end of allocation
- //calculations start
- //Is it complete graph?
- if (is_that_complete(matrix, v))
- {
- printf("True\n");
- }
- //Is it an odd cycle?
- else if (v % 2 == 1)
- {
- if (is_that_cycle(matrix, v))
- {
- printf("True\n");
- }
- else printf("False\n");
- }
- else printf("False\n");
- //calculations end
- //deallocation start
- for (int i = 0; i < v; i++)
- {
- delete[] matrix[i];
- }
- delete[] matrix;
- delete[] mat;
- //deallocation end
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement