Advertisement
hpnq

Дерево

May 19th, 2024
641
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.70 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. //speed coding handle
  3.  
  4. #define mp make_pair
  5. #define cve(tpy) for (auto i : tpy) {for(auto j : i){cout << j << " ";  }cout << "\n";} ;
  6. #define f first
  7. #define s second
  8. #define loop(i, x, n) for (int i = x; i < n; i++)
  9. #define joop(x, n) for (ll j = x; j < n; j++)
  10. #define lp(n) for (ll i = 0; i < n; i++)
  11. #define err cout << "ERROR" << endl;
  12. #define all(x) x.begin(), x.end()
  13. #define pb push_back
  14. #define sz(x) x.size()
  15. #define rndm rng()
  16.  
  17. // types
  18. #define pii pair<int, int>
  19. #define pll pair<ll, ll>
  20. #define vvi vector<vector<int>>
  21. #define vvll vector<vector<ll>>
  22. typedef long long ll;
  23. typedef long double ld;
  24.  
  25. // types of data
  26. #define inf 1000000000
  27. #define infll 1000000000000000000
  28. #define INF ll(1e18)
  29.  
  30. #define md 998244353
  31. #define mod 1000000009
  32. //#define K 239017
  33.  
  34. #define DEBUG 1
  35. using namespace std;
  36. mt19937_64 rng(113113);
  37. uniform_int_distribution<ll> drist;
  38. struct  node    // описание узла
  39. {
  40.     int info;   // информационное поле
  41.     node* next; // поле для связи с другим узлом
  42. };
  43.  
  44. struct tEdge {//описание ребра графа
  45.     int begin;//из какой вершины ребро выходит
  46.     int end;//в какую ребро приходит
  47. };
  48.  
  49.  
  50. struct  nodeEdge    // описание узла для стека ребер
  51. {
  52.     tEdge edge;   // информационное поле
  53.     nodeEdge* next; // поле для связи с другим узлом
  54. };
  55.  
  56. //_________________________________________________________
  57. //функции для работы с очередью вершин
  58.  
  59. void push(node** phead, node** pend, int d) // добавление элемента в очередь
  60. //здесь phead - указатель на начало очереди, pend - указатель на конец очереди
  61. {
  62.     node* p = new node; // выделение памяти под новый узел
  63.     p->info = d; //В информационное поле заносим присланное значение d
  64.     p->next = nullptr; //этот элемент последний, за ним нет узлов,
  65.     //поэтому указатель на следующий ставим на NULL
  66.     if (*pend) (*pend)->next = p;//если очередь была непустой, то наш элемент указываем как next
  67.         //для последнего элемента - т.е. ставим созданный элемент за последним
  68.     else *phead = p;//если очередь была пустой, то созданный элемент делаем началом очереди -
  69.     //указатель на начало ставим на созданный элемент
  70.     *pend = p;//указатель на созданный элемент записываем в указатель на последний элемент очереди
  71.     //если в очереди пока один элемент, то оба указателя phead и pend показывают на этот элемент
  72. }
  73.  
  74. void pop(node** top, node** pend)//удаление первого элемента из очереди
  75. {
  76.     node* temp;
  77.     if ((*top) != nullptr)
  78.     {
  79.         temp = *top; // устанавливаем указатель temp на вершину
  80.         if ((*top) == (*pend))//если очередь состоит из одного элемента
  81.             (*pend) = (*pend)->next;//переносим указатель на последний элемент на NULL
  82.         (*top) = (*top)->next;//переносим указатель на вершину на следующий элемент
  83.         delete temp;//удаляем текущий узел
  84.     }
  85. }
  86.  
  87.  
  88. // code
  89. void build(int** matr, const int n, int k) {
  90. //    cout << "" << endl;
  91.     loop(i, 0, k) {
  92.         int f, s, size;
  93.         cin >> f >> s >> size;
  94.         matr[f-1][s-1] = size;
  95.         matr[s-1][f-1] = size;
  96.     }
  97. }
  98. void print(int** matr, int n)
  99. {
  100.     cout << "matr:" << n << endl;
  101.     for (int i = 0; i < n; i++) {
  102.         for (int j = 0; j < n; j++) cout << matr[i][j] << " ";
  103.         cout << endl;
  104.     }
  105.     cout << endl;
  106. }
  107.  
  108. void bfs(int ** g, const int n){
  109.     vector<queue<int>> qs;
  110.  
  111. }
  112.  
  113.  
  114. void solve(){
  115.     int n, m, k;
  116.     cin >> n >> m >> k;
  117.     int **g = new int*[n];
  118.     loop(i, 0, n)  g[i] = new int[n] {0};
  119.  
  120.     build(g, n, k);
  121.     print(g, n);
  122.     // задам
  123.     bfs(g, n);
  124.  
  125.  
  126. }
  127.  
  128. int main() {
  129.     ios::sync_with_stdio(0);
  130.     cin.tie(0);
  131. #ifdef DEBUG
  132.     freopen("text.txt", "r", stdin);
  133. //    freopen("output.txt", "w", stdout);
  134. #endif
  135.     solve();
  136.     return 1;
  137. }
  138.  
  139.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement