Количество компонент связности

308
02 ноября 2017, 07:26
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int main () {
    int n, m, k, mas[4][4];
    int cur = 0;
    cin>>n>>m;
    vector <int> was(n, -1);
    queue <int> q;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin>>mas[i][j];
        } 
    }
    for (int i = 0; i < n; i++)
    {
        if (was[i] != -1)
           continue;
        q.push(i);
        while (!q.empty())
        {
              int v = q.front();
              q.pop();
              if (was[v] != -1)
                 continue;
              was[v] = cur;
              for (int j = 0; j < n; j++)
                  if (mas[i][j] != 0 && was[j] == -1)
                     q.push(j);
        }
        cur++;
    }
    cout<<cur;
}

Данный код считает максимальную компоненту связности. Как найти их количество?
Например,

3   
0 0 0  
0 0 1  
0 1 0  

Эта программа выводит 3, а количество будет равно 2.

READ ALSO
Вызов operator[] через operator[] const

Вызов operator[] через operator[] const

Почему лучше вызывать константный operator[] из не константного operator[] а не наоборотЯ не вижу разницы между этими двумя способами

346
Что я делаю не так? C++ [требует правки]

Что я делаю не так? C++ [требует правки]

Перед тем, как задать switch, я пишу int a, дабы задать switch (a)

219
Задача по e-olymp C++ [требует правки]

Задача по e-olymp C++ [требует правки]

Не могу решить эту задачу (проходит 10 из 12 проверок): Задача №33

240