90 lines
2.0 KiB
C++
90 lines
2.0 KiB
C++
#include <../inc/my_structures.h>
|
|
#include <../inc/my_util.h>
|
|
|
|
ostream& operator<<(ostream& out, Matrix& mat) {
|
|
for (auto& row: mat) {
|
|
for (auto& weight: row) {
|
|
out << weight;
|
|
out << ", ";
|
|
}
|
|
out << endl;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
|
|
ostream& operator<<(ostream& out, Graph& list) {
|
|
int i = 0;
|
|
for (auto& vertex: list) {
|
|
out << "n: " << i + 1 << " => ";
|
|
string s;
|
|
for (auto& edge: vertex.neighbours) {
|
|
out << "[" << edge.to + 1 << ", " << edge.cost << "], ";
|
|
}
|
|
out << endl;
|
|
|
|
}
|
|
return out;
|
|
}
|
|
|
|
|
|
ostream& operator<<(ostream& out, vector<vector<eStatus>>& vec) {
|
|
int i = 0;
|
|
for (auto& vertex: vec) {
|
|
out << ++i << ": ";
|
|
for (auto& edge: vertex) {
|
|
switch(edge) {
|
|
case eStatus::absent:
|
|
out << "A";
|
|
break;
|
|
case eStatus::backward:
|
|
out << "B";
|
|
break;
|
|
case eStatus::cross:
|
|
out << "C";
|
|
break;
|
|
case eStatus::forward:
|
|
out << "F";
|
|
break;
|
|
default:
|
|
out << "T";
|
|
}
|
|
out << ", ";
|
|
}
|
|
out << endl;
|
|
}
|
|
return out;
|
|
}
|
|
|
|
|
|
istream& operator>>(istream& in, Matrix& mat) {
|
|
string input_str;
|
|
vector<string> weigth_list;
|
|
int row = 0, dim = 0;
|
|
do {
|
|
getline(in, input_str);
|
|
weigth_list = split(input_str);
|
|
if (dim == 0) {
|
|
dim = weigth_list.size();
|
|
mat.resize(dim, vector<int>(dim));
|
|
}
|
|
for (int col = 0; col < dim; col++) {
|
|
mat[row][col] = atoi(&weigth_list[col][0]);
|
|
}
|
|
row++;
|
|
} while (row < dim);
|
|
return in;
|
|
}
|
|
|
|
|
|
Color operator++(Color& obj) { // ++x
|
|
obj = static_cast<Color>((obj + 1));
|
|
return obj;
|
|
}
|
|
|
|
|
|
Color operator++(Color& obj, int) { // x++
|
|
Color result = obj;
|
|
++obj;
|
|
return result;
|
|
} |