Advertisement
dimon-torchila

Untitled

Jan 3rd, 2023
896
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. #include "boost/bimap.hpp"
  3.  
  4. using namespace std;
  5.  
  6. namespace lab2{
  7.     class Graph{
  8.     public:
  9.         Graph(int size){
  10.             for(int i = 0; i < size; ++i){
  11.                 matrix.push_back(vector<int>(size,0));
  12.                 ItN[i] = (char)(97 + i);
  13.                 NtI[char(97 + i)] = i;
  14.             }
  15.  
  16.         }
  17.         auto First(char v){
  18.             if(!matrix[NtI[v]].empty()){
  19.                 if(v >= matrix.size())
  20.                     throw runtime_error("going beyond the boundaries of the matrix");
  21.                 else{
  22.                     for(int i = 0; i < matrix[NtI[v]].size(); ++i){
  23.                         if(matrix[NtI[v]][i] != 0)
  24.                             return i;
  25.                     }
  26.                     return -1;
  27.                 }
  28.             } else
  29.                 throw runtime_error("height does not exist");
  30.         }
  31.  
  32.         auto Next(char v, char i){
  33.             if(!matrix[NtI[v]].empty()){
  34.                 if(NtI[i] == matrix[NtI[v]].size() - 1){
  35.                     return -1;
  36.                 }
  37.                 for(int x = NtI[i] + 1; i < matrix[NtI[v]].size(); ++i){
  38.                     if(matrix[NtI[v]][x] != 0)
  39.                         return x;
  40.                 }
  41.             }
  42.             else
  43.                 throw runtime_error("height does not exist");
  44.         }
  45.  
  46.         auto Vertex(char v, int i){
  47.             if(!matrix[NtI[v]].empty()){
  48.                 if(i == 0)
  49.                     return First(v);
  50.                 int c = First(v);
  51.                 while(i != 0){
  52.                     c = Next(v, c);
  53.                     --i;
  54.                 }
  55.                 return c;
  56.             }
  57.                 else throw runtime_error("height does not exist");
  58.  
  59.         }
  60.  
  61.         auto Add_V(char v){
  62.             NtI[v] = matrix.size();
  63.             ItN[matrix.size()] = v;
  64.             matrix.push_back(vector<int>(matrix[0].size(), 0));
  65.             for(auto& x : matrix){
  66.                 if(!x.empty())
  67.                     x.push_back(0);
  68.             }
  69.         }
  70.  
  71.         auto Add_E(char v, char w, int c){
  72.             matrix[NtI[v]][NtI[w]] = c;
  73.         }
  74.  
  75.         auto Del_V(char v){
  76.             matrix[NtI[v]].clear();
  77.             for(int i = 0; i < matrix.size(); ++i){
  78.                 if(!matrix[i].empty()){
  79.                     matrix[i][NtI[v]] = 0;
  80.                 }
  81.             }
  82.             ItN.erase(NtI[v]);
  83.             NtI.erase(v);
  84.  
  85.         }
  86.  
  87.         auto Del_E(char v, char w){
  88.             matrix[NtI[v]][NtI[w]] = 0;
  89.         }
  90.  
  91.         auto Edit_V(char v, char new_v){
  92.             NtI[new_v] = NtI[v];
  93.             NtI.erase(v);
  94.             ItN[NtI[new_v]] = new_v;
  95.         }
  96.  
  97.         auto Edit_E(char v, char w, int c){
  98.             matrix[NtI[v]][NtI[w]] = c;
  99.         }
  100.  
  101.         auto print(){
  102.             cout << "  ";
  103.             for(const auto x : NtI){
  104.                 cout << x.first << ' ';
  105.             }
  106.             cout << endl;
  107.             for(int i = 0; i < matrix.size(); ++i){
  108.                 if(!matrix[i].empty()) {
  109.                     cout << ItN[i] << ' ';
  110.                     for (int j = 0; j < matrix[i].size(); ++j) {
  111.                         if(ItN.contains(j))
  112.                             cout << matrix[i][j] << ' ';
  113.                     }
  114.                     cout << endl;
  115.                 }
  116.  
  117.             }
  118.         }
  119.         vector<vector<char>> dist(int len, set<int> visited){
  120.             for(int i = 0; i < matrix.size(); ++i){
  121.                 if(First(ItN[i]) == ' ')
  122.                     continue;
  123.  
  124.             }
  125.         }
  126.  
  127.  
  128.     private:
  129.         vector<vector<int>> matrix;
  130.         map<char, int> NtI;
  131.         map<int, char> ItN;
  132.     };
  133. }
  134.  
  135. #ifndef ALGORITHMS_LAB2_H
  136. #define ALGORITHMS_LAB2_H
  137.  
  138. #endif //ALGORITHMS_LAB2_H
  139.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement