Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- //speed coding handle
- #define mp make_pair
- #define cve(tpy) for (auto i : tpy) {for(auto j : i){cout << j << " "; }cout << "\n";} ;
- #define f first
- #define s second
- #define loop(i, x, n) for (int i = x; i < n; i++)
- #define joop(x, n) for (ll j = x; j < n; j++)
- #define lp(n) for (ll i = 0; i < n; i++)
- #define err cout << "ERROR" << endl;
- #define all(x) x.begin(), x.end()
- #define pb push_back
- #define sz(x) x.size()
- #define rndm rng()
- // types
- #define pii pair<int, int>
- #define pll pair<ll, ll>
- #define vvi vector<vector<int>>
- #define vvll vector<vector<ll>>
- typedef long long ll;
- typedef long double ld;
- // types of data
- #define inf 1000000000
- #define infll 1000000000000000000
- #define INF ll(1e18)
- #define md 998244353
- #define mod 1000000009
- //#define K 239017
- #define DEBUG 1
- using namespace std;
- mt19937_64 rng(113113);
- uniform_int_distribution<ll> drist;
- struct node // описание узла
- {
- int info; // информационное поле
- node* next; // поле для связи с другим узлом
- };
- struct tEdge {//описание ребра графа
- int begin;//из какой вершины ребро выходит
- int end;//в какую ребро приходит
- };
- struct nodeEdge // описание узла для стека ребер
- {
- tEdge edge; // информационное поле
- nodeEdge* next; // поле для связи с другим узлом
- };
- //_________________________________________________________
- //функции для работы с очередью вершин
- void push(node** phead, node** pend, int d) // добавление элемента в очередь
- //здесь phead - указатель на начало очереди, pend - указатель на конец очереди
- {
- node* p = new node; // выделение памяти под новый узел
- p->info = d; //В информационное поле заносим присланное значение d
- p->next = nullptr; //этот элемент последний, за ним нет узлов,
- //поэтому указатель на следующий ставим на NULL
- if (*pend) (*pend)->next = p;//если очередь была непустой, то наш элемент указываем как next
- //для последнего элемента - т.е. ставим созданный элемент за последним
- else *phead = p;//если очередь была пустой, то созданный элемент делаем началом очереди -
- //указатель на начало ставим на созданный элемент
- *pend = p;//указатель на созданный элемент записываем в указатель на последний элемент очереди
- //если в очереди пока один элемент, то оба указателя phead и pend показывают на этот элемент
- }
- void pop(node** top, node** pend)//удаление первого элемента из очереди
- {
- node* temp;
- if ((*top) != nullptr)
- {
- temp = *top; // устанавливаем указатель temp на вершину
- if ((*top) == (*pend))//если очередь состоит из одного элемента
- (*pend) = (*pend)->next;//переносим указатель на последний элемент на NULL
- (*top) = (*top)->next;//переносим указатель на вершину на следующий элемент
- delete temp;//удаляем текущий узел
- }
- }
- // code
- void build(int** matr, const int n, int k) {
- // cout << "" << endl;
- loop(i, 0, k) {
- int f, s, size;
- cin >> f >> s >> size;
- matr[f-1][s-1] = size;
- matr[s-1][f-1] = size;
- }
- }
- void print(int** matr, int n)
- {
- cout << "matr:" << n << endl;
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < n; j++) cout << matr[i][j] << " ";
- cout << endl;
- }
- cout << endl;
- }
- void bfs(int ** g, const int n){
- vector<queue<int>> qs;
- }
- void solve(){
- int n, m, k;
- cin >> n >> m >> k;
- int **g = new int*[n];
- loop(i, 0, n) g[i] = new int[n] {0};
- build(g, n, k);
- print(g, n);
- // задам
- bfs(g, n);
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- #ifdef DEBUG
- freopen("text.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- #endif
- solve();
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement