#include <iomanip>
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <vector>

using namespace std;

void fitnessChart(vector<vector<vector<int> > > array, int&);

int main(int argc, char* argv[])
{
    int vertices;
    const int initial_value = 0;
    int pop;
    std::cout << "Enter the number of vertices:" << std::endl;
    std::cin >> vertices;
    std::cout << "Enter the size of the population:" << std::endl;
    std::cin >> pop;

    std::vector<int> sub_sub_array(vertices, initial_value);
    std::vector<std::vector<int> > sub_array(vertices, sub_sub_array);
    std::vector<std::vector<std::vector<int> > > array(pop, sub_array);

    int e;
    for(int i = 0; i < pop; ++i)
    {
        for(int j = 0; j < vertices; ++j)
        {
            for(int k = 0; k < vertices; ++k)
            {
                e = rand() %2;
                if (j == k)
                {
                    array[i][j][k] = 9;
                    break;
                }
                else
                {
                    array[i][j][k] = e;
                    array[i][k][j] = e;
                }

            }
        }
    }



// Print out the full array contents
    for(int i = 0; i < pop; ++i)
    {
        for(int j = 0; j < vertices; ++j)
        {
            for(int k = 0; k < vertices; ++k)
            {
                if(j!=k)
                {
                    std::cout << " " << array[i][j][k] << " ";
                }
                else
                    std::cout << " - ";
            }
            std::cout << "\n";
        }
        std::cout << "\n";
    }

    for(int i = 0; i < array.size(); i++)
    {
        fitnessChart(array, i);
    }

    system ("pause");
}

void fitnessChart(vector<vector<vector<int> > > array, int& i)
{
    int count=0, match, first, j=0, k=1;

    for(k; k < array[k].size(); k++)
    {
        match = array[i][j][k];
        first = j;
        j = k;

        for(k; k < array[k].size(); k++)
        {
            if (array[i][j][k+1] == match)
            {
                if (array[i][k+1][first] == match)
                {
                    count++;
                }
            }
        }
    }
    cout << count << endl;
}
