Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <locale.h>
- using namespace std;
- ifstream f("ishod.txt", ios::in);
- //Определение числа компонент связности в графе по матрице смежности.
- // Метод : что-то похожее на обход в глубину
- int main()
- {
- setlocale(LC_ALL, "rus");
- int n;
- bool**b;
- f >> n;
- const int n2 = n;
- b = new bool*[n2];
- for (int i = 0; i<n2; i++)
- {
- b[i] = new bool[n2];
- }
- for (int i = 0; i < n2; i++){
- for (int j = 0; j < n2; j++)
- {
- int c;
- f >> c;
- if (c == 1 || c == 0)
- {
- if (c == 1)
- b[i][j] = true;
- else b[i][j] = false;
- }
- else { cout << "\nОШИБКА!\n"; j = j - 1; continue; }
- b[i][i] = false;
- }
- }
- bool**p;
- p = new bool*[n2];
- for (int i = 0; i<n2; i++)
- {
- p[i] = new bool[n2];
- }
- int re = 0;
- for (int i = 0; i < n2; i++){
- for (int j = 0; j < n2; j++)
- {
- if (b[i][j] == 1) re++;
- p[i][j] = b[i][j];
- }
- }
- for (int i = 0; i < n2; i++){
- for (int j = 0; j < n2; j++){
- if (p[i][j] == true){
- for (int z = 0; z < n2; z++){
- if (p[j][z] == true && i != z){
- p[i][z] = true;
- }
- }
- }
- }
- }
- int *visit = new int[n2];
- int cmpsvyaz = 0;
- for (int i = 0; i<n2; i++) visit[i] = 0;
- for (int g = 0; g<n2; g++)
- {
- int k = 1;
- if (visit[g] == 0)
- {
- visit[g] = 1;
- for (int j = 0; j<n2; j++)
- if (p[g][j] == 1 && p[j][g] == 1){
- visit[j] = 1;
- k++;
- }cmpsvyaz++;
- }
- }
- cout << endl;
- cout << "Кол-во компонент связности = " << cmpsvyaz << endl;
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment