From d125433bf73affbb37cdfbbf3f29c84638cb03ba Mon Sep 17 00:00:00 2001 From: Ivan Gousev Date: Thu, 16 Jan 2025 12:41:24 +0300 Subject: [PATCH 1/7] 5 tasks --- .clang-format | 83 +++++++++++++++ task_01/CMakeLists.txt | 2 - task_01/build/task_01 | Bin 0 -> 75224 bytes task_01/build/task_01_tests | Bin 0 -> 126504 bytes task_01/build/task_01_tests[1]_include.cmake | 5 + task_01/build/task_01_tests[1]_tests.cmake | 3 + task_01/src/a.out | Bin 0 -> 68056 bytes task_01/src/main.cpp | 55 +++++++++- task_01/src/solution.cpp | 52 +++++++++ task_01/src/solution.h | 17 +++ task_01/src/test.cpp | 95 ++++++++++++++++- task_02/src/.clangd | 2 + task_02/src/a.out | Bin 0 -> 96968 bytes task_02/src/main.cpp | 65 +++++++++++- task_02/src/solution.cpp | 78 ++++++++++++++ task_02/src/solution.cpp.old | 76 ++++++++++++++ task_02/src/solution.h | 21 ++++ task_02/src/test.cpp | 105 +++++++++++++------ task_03/src/main.cpp | 33 +++++- task_03/src/solution.cpp | 90 ++++++++++++++++ task_03/src/solution.h | 25 +++++ task_03/src/test.cpp | 73 ++++++++++++- task_03/src/topology_sort.cpp | 1 - task_03/src/topology_sort.hpp | 1 - task_04/src/deixtra.cpp | 39 +++++++ task_04/src/deixtra.h | 24 +++++ task_04/src/main.cpp | 24 ++++- task_04/src/test.cpp | 42 +++++++- task_05/src/main.cpp | 9 +- task_05/src/rmq.cpp | 79 ++++++++++++++ task_05/src/rmq.h | 9 ++ task_05/src/test.cpp | 47 ++++++++- 32 files changed, 1100 insertions(+), 55 deletions(-) create mode 100644 .clang-format create mode 100755 task_01/build/task_01 create mode 100755 task_01/build/task_01_tests create mode 100644 task_01/build/task_01_tests[1]_include.cmake create mode 100644 task_01/build/task_01_tests[1]_tests.cmake create mode 100755 task_01/src/a.out create mode 100644 task_01/src/solution.cpp create mode 100644 task_01/src/solution.h create mode 100644 task_02/src/.clangd create mode 100755 task_02/src/a.out create mode 100644 task_02/src/solution.cpp create mode 100644 task_02/src/solution.cpp.old create mode 100644 task_02/src/solution.h create mode 100644 task_03/src/solution.cpp create mode 100644 task_03/src/solution.h delete mode 100644 task_03/src/topology_sort.cpp delete mode 100644 task_03/src/topology_sort.hpp create mode 100644 task_04/src/deixtra.cpp create mode 100644 task_04/src/deixtra.h create mode 100644 task_05/src/rmq.cpp create mode 100644 task_05/src/rmq.h diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..df2202e --- /dev/null +++ b/.clang-format @@ -0,0 +1,83 @@ +# Google C/C++ Code Style settings +# https://clang.llvm.org/docs/ClangFormatStyleOptions.html +# Author: Kehan Xue, kehan.xue (at) gmail.com + +Language: Cpp +BasedOnStyle: Google +AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: None +AlignOperands: Align +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Inline +AllowShortIfStatementsOnASingleLine: Never # To avoid conflict, set this "Never" and each "if statement" should include brace when coding +AllowShortLambdasOnASingleLine: Inline +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterReturnType: None +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterStruct: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + IndentBraces: false + SplitEmptyFunction: false + SplitEmptyRecord: false + SplitEmptyNamespace: false +BreakBeforeBinaryOperators: None +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeColon +BreakInheritanceList: BeforeColon +ColumnLimit: 80 +CompactNamespaces: false +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false # Make sure the * or & align on the left +EmptyLineBeforeAccessModifier: LogicalBlock +FixNamespaceComments: true +IncludeBlocks: Preserve +IndentCaseLabels: true +IndentPPDirectives: None +IndentWidth: 2 +KeepEmptyLinesAtTheStartOfBlocks: true +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PointerAlignment: Left +ReflowComments: false +# SeparateDefinitionBlocks: Always # Only support since clang-format 14 +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: c++11 +TabWidth: 4 +UseTab: Never diff --git a/task_01/CMakeLists.txt b/task_01/CMakeLists.txt index ca55045..9597b3a 100644 --- a/task_01/CMakeLists.txt +++ b/task_01/CMakeLists.txt @@ -20,7 +20,6 @@ include_directories(${PROJECT_NAME} PUBLIC src) include_directories(${PROJECT_NAME} PUBLIC ../lib/src) add_executable(${PROJECT_NAME} ${source_list}) -target_link_libraries(${PROJECT_NAME} PUBLIC Utils) # Locate GTest enable_testing() @@ -32,7 +31,6 @@ add_executable(${PROJECT_NAME}_tests ${test_source_list}) target_link_libraries( ${PROJECT_NAME}_tests GTest::gtest_main - Utils ) include(GoogleTest) diff --git a/task_01/build/task_01 b/task_01/build/task_01 new file mode 100755 index 0000000000000000000000000000000000000000..5dd60667e44fd03c32079507f0ed180cd5657c23 GIT binary patch literal 75224 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 KR|VIj@&5pms!cfn literal 0 HcmV?d00001 diff --git a/task_01/build/task_01_tests b/task_01/build/task_01_tests new file mode 100755 index 0000000000000000000000000000000000000000..5b421e51d78cb1a8d6266340b277c2270cdcbc80 GIT binary patch literal 126504 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 literal 0 HcmV?d00001 diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 0e4393b..75f2350 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,3 +1,56 @@ +#include #include +#include +#include "solution.h" -int main() { return 0; } + +int main() { + std::vector nodes; + std::vector ans; + + int N=5; + nodes.resize(N); + // список ребер + /*nodes[1 2);*/ + nodes[0].neighbours.push_back(1); + nodes[0].neighbours.push_back(4); + nodes[1].neighbours.push_back(2); + nodes[3].neighbours.push_back(0); + nodes[3].neighbours.push_back(4); + nodes[4].neighbours.push_back(1); + nodes[4].neighbours.push_back(2); + for(int i =0; i nodes;*/ + /*std::vector ans;*/ + /**/ + /*int n, k, tmp, N;*/ + /*std::cin >> N >> tmp; // колич*/ + /*nodes.resize(N);*/ + /*// список ребер*/ + /*while ((tmp--)>0) {*/ + /* std::cin >> n >> k;*/ + /* nodes[n].neighbours.push_back(k);*/ + /*}*/ + /*for(int i =0; i=0;i--){ + std::cout< solution(std::vector nodes){ + std::deque gray; + std::vector ans; + int N = nodes.size(),tmp=0; + for(int i =0; i=N){ + break; + } + if(nodes[i].flag==false){ + i++; + continue; + } + gray.push_back(i); + current = &nodes[i]; + + while(gray.size()){ + current = &nodes[gray.back()]; + if(!current->flag){ + gray.pop_back(); + continue; + } + if(current->neighbours.size()<=current->last){ + ans.push_back(current->id); + current->flag = false; + gray.pop_back(); + continue; + } + tmp = current->neighbours[current->last]; + gray.push_back(tmp); + current->last++; + } + i++; + } + return ans; + +} + + diff --git a/task_01/src/solution.h b/task_01/src/solution.h new file mode 100644 index 0000000..5951cbe --- /dev/null +++ b/task_01/src/solution.h @@ -0,0 +1,17 @@ + +#include +#include +#include + + +class node { +public: + std::vector neighbours; + int last = 0; + int id; + bool flag = true; // белая +}; + + +std::vector solution(std::vector nodes); + diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index 87cef73..b8f000e 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -1,5 +1,96 @@ #include +#include + +#include "solution.h" TEST(Test, Simple) { - ASSERT_EQ(1, 1); // Stack [] -} \ No newline at end of file + std::vector nodes; + std::vector ans; + + int N=3; + nodes.resize(N); + // список ребер + nodes[1].neighbours.push_back(2); + nodes[0].neighbours.push_back(2); + nodes[0].neighbours.push_back(1); + for(int i =0; i assertion = {0,1,2}; + ASSERT_TRUE(assertion.size() == ans.size()); + for(int i = 0;i nodes; + std::vector ans; + + int N=5; + nodes.resize(N); + // список ребер + /*nodes[1 2);*/ + nodes[0].neighbours.push_back(1); + nodes[0].neighbours.push_back(4); + nodes[1].neighbours.push_back(2); + nodes[3].neighbours.push_back(0); + nodes[3].neighbours.push_back(4); + nodes[4].neighbours.push_back(1); + nodes[4].neighbours.push_back(2); + for(int i =0; i assertion = {3, 0, 4, 1, 2}; + ASSERT_TRUE(assertion.size() == ans.size()); + for(int i = 0;i nodes; + std::vector ans; + + int N=6; + nodes.resize(N); + // список ребер + // 0 -> 1 + // V Δ + // 3 -> 4 + // 5 -> 2 + nodes[0].neighbours.push_back(1); + nodes[5].neighbours.push_back(2); + nodes[3].neighbours.push_back(4); + nodes[0].neighbours.push_back(3); + nodes[4].neighbours.push_back(1); + for(int i =0; i assertion = {5, 2, 0, 3, 4, 1}; + ASSERT_TRUE(assertion.size() == ans.size()); + for(int i = 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 ZGI-f>?JE-ZT>p>n%9dx74#~&f{{UNHgrNWc literal 0 HcmV?d00001 diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index 0e4393b..85f6501 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -1,3 +1,66 @@ +#include #include +#include +#include "solution.h" -int main() { return 0; } +/* + ______________________ +/ . \ +| ├── main.cpp | +| ├── solution.cpp | +| ├── solution.h | +| ├── stack.cpp | +| ├── stack.hpp | +| └── test.cpp | +| | +\ 1 directory, 6 files / + ---------------------- + \ ^__^ + \ (oo)\_______ + (__)\ )\/\ + ||----w | + || || +*/ +int main() { + std::vector nodes; + + int n, k=0, tmp, N; + N=4; + tmp=4; // колич + nodes.resize(N); + // список ребер + std::vector> loh={{0,1}, + {1,2}, + {2,3}, + {0,2}}; + while (k nodes;*/ + /**/ + /*int n, k, tmp, N;*/ + /*std::cin >> N >> tmp; // колич*/ + /*nodes.resize(N);*/ + /*// список ребер*/ + /*while ((tmp--)>0) {*/ + /* std::cin >> n >> k;*/ + /* nodes[n].neighbours.push_back(k);*/ + /* nodes[k].neighbours.push_back(n);*/ + /*}*/ + + auto ans = solution(nodes); + + std::cout<<"\n\n"< +#include +#include + + +static std::vector h, d; +static std::vector used; +static std::vector lockers; +static std::vector> bridges; + + +void dfs_lockers( std::vector &nodes, int v = 0, int p = -1){ + used[v] = 1; + d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); + int children = 0; + for (auto u : nodes[v].neighbours) { + if (u != p) { + if (used[u]) + d[v] = std::min(d[v], h[u]); + else { + dfs_lockers(nodes, u, v); + d[v] = std::min(d[v], d[u]); + if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно + if(h[v]!=d[u]) + bridges.push_back(std::pair(v, u)); + if(p!=-1) + lockers.push_back(v); + } + children++; + } + } + } + if (p == -1 && children > 1) { + lockers.push_back(v); + } + +} +void dfs_bridges(std::vector &nodes, int v = 0, int p = -1){ + used[v] = true; + d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); + for (auto u : nodes[v].neighbours) { + if (u != p) { + if (used[u]) // если ребро обратное + d[v] = std::min(d[v], h[u]); + else { // если ребро прямое + dfs_bridges(nodes, u, v); + d[v] = std::min(d[v], d[u]); + if (h[v] < d[u]) { + bridges.push_back(std::pair(v, u)); + } + } + } + } + +} + +std::pair>,std::vector> solution(std::vector nodes){ + used.resize(nodes.size()); + h.resize(nodes.size()); + d.resize(nodes.size()); + lockers.clear(); + bridges.clear(); + for(int i = 0; i nc = nodes; + dfs_lockers(nodes); + + + + return std::pair>,std::vector>(bridges,lockers); + +} + + diff --git a/task_02/src/solution.cpp.old b/task_02/src/solution.cpp.old new file mode 100644 index 0000000..85184a5 --- /dev/null +++ b/task_02/src/solution.cpp.old @@ -0,0 +1,76 @@ +#include "solution.h" +#include +#include +#include + + + +std::vector solution(std::vector &nodes){ + std::deque gray; + std::unordered_set visited; + std::vector lockers; + int N = nodes.size(),tmp; + std::cout<<"~~~~~~~~~~~~~~~~~~~~\n"; + + for(int i =0; ilast != current->neighbours.end()&&(*(current->last))->locked){current->last++;} + if(current->locked && current->last == current->neighbours.end()){ + /*current->locked = true;*/ + lockers.back()=current->id; + gray.pop_back(); + continue; + } + while(gray.size()){ + current = gray.back(); + std::cout<id<<" start\n"; + if(!visited.contains(current->id)){ + visited.insert(current->id); + std::cout<id<<" visited\n"; + } + std::cout<id<<" passed 1"<last == current->neighbours.end()){ + std::cout<id<<" was locked. break"<locked = true; + gray.pop_back(); + lockers.push_back(current->id); + break; + } + std::cout<id<<" passed 2"<last))->id)){ + std::cout<id<<" neighbot visited. continue"<id == 0){current->last++;continue;} + (*(current->last))->locked = gray[gray.size()-2]; + current->last++; + continue; + } + std::cout<id<<" passed 3"<last)); + } + if(gray.size()==1){ + break; + } + start.locked = true; + } + /*1*/ + + tmp=0; + return lockers; + +} + + diff --git a/task_02/src/solution.h b/task_02/src/solution.h new file mode 100644 index 0000000..6491517 --- /dev/null +++ b/task_02/src/solution.h @@ -0,0 +1,21 @@ +#ifndef __SOLUTION_H__ +#define __SOLUTION_H__ + +#include +#include +#include +#include +#include + +class node { +public: + std::vector neighbours; + int id; + bool locked = false; // + bool flag = false; // белая +}; + + +std::pair>,std::vector> solution(std::vector nodes); + +#endif // __SOLUTION_H__ diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 54e7ce9..9187d2c 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -1,42 +1,79 @@ #include +#include -#include -#include "stack.hpp" +#include "solution.h" TEST(StackTest, Simple) { - Stack stack; - stack.Push(1); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] - stack.Push(1); // Stack [1] - stack.Push(2); // Stack [1, 2] - ASSERT_EQ(stack.Pop(), 2); // Stack [1] - stack.Push(3); // Stack [1, 3] - ASSERT_EQ(stack.Pop(), 3); // Stack [1] - ASSERT_EQ(stack.Pop(), 1); // Stack [] + std::vector nodes; + + int n, k=0, tmp, N; + N=4; + tmp=4; // колич + nodes.resize(N); + // список ребер + std::vector> loh={{0,1}, + {1,2}, + {2,3}, + {0,2}}; + while (k> assertionb = {{2,3}}; + ASSERT_TRUE(assertionb.size() == ans.first.size()); + for(int i = 0;i assertionn = {2}; + ASSERT_TRUE(assertionn.size() == ans.second.size()); + for(int i = 0;i nodes; + + int n, k=0, tmp, N; + N=4; + nodes.resize(N); + // список ребер + std::vector> loh={{0,1}, + {1,2}, + {2,3}, + {0,2}, + {0,3}}; + tmp=loh.size(); // колич + while (k> assertionb = {}; + ASSERT_TRUE(assertionb.size() == ans.first.size()); + for(int i = 0;i assertionn = {}; + ASSERT_TRUE(assertionn.size() == ans.second.size()); + for(int i = 0;i +#include "solution.h" -int main() { return 0; } + +int main() { + std::vector> expected = {{0,-1,2,-2,1},{999,0,3,-1,2},{1000,998,0,997,1000},{1000,1,4,0,3},{997,-2,1,-3,0}}; + std::vector nodes; + std::vector edges = {0, -1, 4, 1000, 1000, + 1000, 0, 3, 2, 2, + 1000, 1000, 0, 1000, 1000, + 1000, 1, 5, 1000, 1000, + 1000, 1000, 1000, -3, 1000}; + int n=5,tmp; + nodes.resize(n); + for(int i = 0; i +#include +#include +#include +#include + + + +void deixtra(std::vector &nodes, int start){ + std::priority_queue> qqe; // {len, id} + node *current; + int tmp; + for(auto &i:nodes){ + i.len = std::numeric_limits::max(); + } + nodes[start].len=0; + + qqe.push({0,start}); + + while (!qqe.empty()) { + current= &nodes[qqe.top().second]; + int dst = qqe.top().first; + qqe.pop(); + if (current->len < dst) { + continue; + } + for (auto &i: current->neighbours) { + int n_dst = dst + i.second; + if (n_dst < nodes[i.first].len) { + nodes[i.first].len = n_dst; + qqe.push({n_dst, i.first}); + } + } + } + + +} + + +bool bellford(std::vector &nodes/*, int start*/){ + int tmp=0; + /*node s;*/ + bool flag=false; + for(auto &i:nodes){ + /*s.neighbours.push_back({i.id, 0});*/ + i.pot = 0; + } + while (nodes.size()>=(tmp++)) { + for (auto &i: nodes) { + for (auto &j: i.neighbours) { + int n_dst = i.pot + j.second; + if (n_dst < nodes[j.first].pot) { + /*std::cout<> jonson(std::vector nodes){ + std::vector> ret(nodes.size(), std::vector(nodes.size(), std::numeric_limits::min())); + if(!bellford(nodes)){ + /*std::cout<<"wrong!";*/ + return ret; + } + for(auto &i:nodes){ + for(auto &j:i.neighbours){ + j.second = j.second+nodes[j.first].pot-i.pot; + } + } + for(int i = 0; i +#include + + +class node { +public: + std::vector> neighbours; // {id, size} + int id; + int len=0; + int pot=0; + bool locked = false; // + bool wisited = false; +}; + + +void deixtra(std::vector &nodes, int start); + + +bool bellford(std::vector &nodes/*, int start*/); + +std::vector> jonson(std::vector nodes); + +#endif // !__DEIXTRA_H__ diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index ef5a86a..e2c1f1a 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,8 +1,73 @@ - #include +#include +#include "solution.h" -#include "topology_sort.hpp" +TEST(Deixtra, Simple) { + std::vector nodes; + std::vector edges = {0, 1, 1, + 4, 0, 1, + 2, 1, 0}; + int n=3,start=1,finish=0,tmp; + nodes.resize(n); + for(int i = 0; i nodes; + std::vector edges = {0, 1, 1, + 4, 0, 7, + 2, 1, 0}; + int n=3,start=1,finish=0,tmp; + nodes.resize(n); + for(int i = 0; i> expected = {{0,-1,2,-2,1},{999,0,3,-1,2},{1000,998,0,997,1000},{1000,1,4,0,3},{997,-2,1,-3,0}}; + std::vector nodes; + std::vector edges = {0, -1, 4, 1000, 1000, + 1000, 0, 3, 2, 2, + 1000, 1000, 0, 1000, 1000, + 1000, 1, 5, 1000, 1000, + 1000, 1000, 1000, -3, 1000}; + int n=5,tmp; + nodes.resize(n); + for(int i = 0; i +#include +#include + + + +void deixtra(std::vector &nodes, int start){ + std::priority_queue> qqe; // {len, id} + node *current; + int tmp; + for(auto &i:nodes){ + i.len = std::numeric_limits::max(); + } + nodes[start].len=0; + + qqe.push({0,start}); + + while (!qqe.empty()) { + current= &nodes[qqe.top().second]; + int dst = qqe.top().first; + qqe.pop(); + if (current->len < dst) { + continue; + } + for (auto &i: current->neighbours) { + int n_dst = dst + i.second; + if (n_dst < nodes[i.first].len) { + nodes[i.first].len = n_dst; + qqe.push({n_dst, i.first}); + } + } + } + + +} + + + diff --git a/task_04/src/deixtra.h b/task_04/src/deixtra.h new file mode 100644 index 0000000..35b4331 --- /dev/null +++ b/task_04/src/deixtra.h @@ -0,0 +1,24 @@ +#ifndef __DEIXTRA_H__ +#define __DEIXTRA_H__ + +#include +#include + + +class node { +public: + std::vector> neighbours; // {id, size} + int id; + int len; + bool locked = false; // + bool wisited = false; +}; + + +void deixtra(std::vector &nodes, int start); + + + + + +#endif // !__DEIXTRA_H__ diff --git a/task_04/src/main.cpp b/task_04/src/main.cpp index 0e4393b..abbcc8f 100644 --- a/task_04/src/main.cpp +++ b/task_04/src/main.cpp @@ -1,3 +1,25 @@ #include +#include +#include "deixtra.h" -int main() { return 0; } +int main() { + std::vector nodes; + int n,start,finish,tmp; + std::cin >> n >> start >>finish; + nodes.resize(n); + for(int i = 0; i>tmp; + if(i==j){ + continue; + } + nodes[i].neighbours.push_back({j, tmp}); + } + } + deixtra(nodes, start-1); + + + std::cout< +#include "deixtra.h" + +TEST(Deixtra, Simple) { + std::vector nodes; + std::vector edges = {0, 1, 1, + 4, 0, 1, + 2, 1, 0}; + int n=3,start=1,finish=0,tmp; + nodes.resize(n); + for(int i = 0; i nodes; + std::vector edges = {0, 1, 1, + 4, 0, 7, + 2, 1, 0}; + int n=3,start=1,finish=0,tmp; + nodes.resize(n); + for(int i = 0; i +#include "rmq.h" -int main() { return 0; } + +int main() { + int a[] = {1,2,3,-1,5,6}; + auto ans = rmq(a, 6, {{0,2}}); + std::cout << ans[0]; + +} diff --git a/task_05/src/rmq.cpp b/task_05/src/rmq.cpp new file mode 100644 index 0000000..502fc53 --- /dev/null +++ b/task_05/src/rmq.cpp @@ -0,0 +1,79 @@ +#include "rmq.h" +#include +#include +#include +#include +#include + +const int powers[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144}; + +std::vector rmq(int* A, int sz, std::vector> brd){ + std::vector> minn; + std::vector ret; + minn.push_back({}); + minn[0].assign(A,A+sz); + int tmp=1; + while(minn[tmp-1].size()>2){ + minn.push_back({}); + for(int i=1;i::max()); + tmp++; + } + + for(auto &i:brd){ + tmp = i.second-i.first; + int minC = std::numeric_limits::max(); + if(tmp<8){ + for(int j = i.first; j<=i.second; j++){ + minC = std::min(minC,A[j]); + } + ret.push_back(minC); + continue; + } + int j = minn.size(); + while(powers[j]>tmp){ + j--; + } + j--; + int start = i.first/powers[j], stop = i.second/powers[j]; + /*std::cout <minn[k][stop]&&k>0){ + stop=stop*powers[j]; + while(k>0){ + k--; + for(;stop+powers[k]<=i.second;stop+=powers[k]){ + minC = std::min(minC, minn[k][stop/powers[k]]); + } + } + } + k = j; + if(minC>minn[k][start]&&k>0){ + start=(start+1)*powers[j]; + while((--k)>=0){ + /*std::cout<=i.first;start-=powers[k]){ + /*std::cout<< "\n"< +#include +#ifndef __RMQ_H__ + + +std::vector rmq(int* A, int size, std::vector> brd); + + +#endif // !__RMQ_H__ diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 5e11617..06b84d5 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -1,6 +1,47 @@ - +#include #include +#include +#include +#include + +#include "rmq.h" -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +int ROFLS_KATKA(int *A, int start, int stop){ + int mn = std::numeric_limits::max(); + for(int i = start;i<=stop;i++){ + mn = std::min(A[i],mn); + } + return mn; } + + +TEST(Test, Simple) { + int a[] = {1,2,3,-1,5,6}; + auto ans = rmq(a, 6, {{0,2}}); + ASSERT_TRUE(ans[0]==ROFLS_KATKA(a, 0, 2)); +} + + +TEST(Test, Rand) { + int a[50],tmp = 0; + srand(22848); + std::vector> dd; + for(int i = 0;i<=40;i++){ + for(int j = i;j<=40;j++){ + dd.push_back({i,j}); + } + a[i] = rand(); + } + auto ans = rmq(a, 50, dd); + + for(int i = 0;i<40;i++){ + for(int j = i;j<=40;j++){ + ASSERT_TRUE(ans[tmp]==ROFLS_KATKA(a, i, j))< Date: Thu, 16 Jan 2025 13:38:45 +0300 Subject: [PATCH 2/7] 6 tasks --- task_06/src/lca.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++ task_06/src/lca.h | 9 +++++++ task_06/src/main.cpp | 11 +++++++- task_06/src/test.cpp | 15 ++++++++--- 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 task_06/src/lca.cpp create mode 100644 task_06/src/lca.h diff --git a/task_06/src/lca.cpp b/task_06/src/lca.cpp new file mode 100644 index 0000000..74981ce --- /dev/null +++ b/task_06/src/lca.cpp @@ -0,0 +1,60 @@ +#include +#include +#include + + +static int l; +static std::vector tin, tout; +static int timer; +static std::vector < std::vector > up; + +void dfs (int v, std::vector> &g, int p = 0) { + tin[v] = ++timer; + up[v][0] = p; + for (int i=1; i<=l; ++i) + up[v][i] = up[up[v][i-1]][i-1]; + for (size_t i=0; i= tout[b]; +} + +std::vector lca (std::vector> &g, std::vector> dd) { + tin.clear(), tout.clear(), up.clear(); + l=0; + tin.resize (g.size()), tout.resize (g.size()), up.resize (g.size()); + std::vector ret = {}; + l = 0; + while ((1<=0; --i) + if (! upper (up[a][i], b)) + a = up[a][i]; + ret.push_back(up[a][0]); + } + return ret; +} + + + + + + diff --git a/task_06/src/lca.h b/task_06/src/lca.h new file mode 100644 index 0000000..df33c74 --- /dev/null +++ b/task_06/src/lca.h @@ -0,0 +1,9 @@ +#ifndef __LCA_H__ +#define __LCA_H__ +#include + + +std::vector lca (std::vector> &g, std::vector> dd); + + +#endif // !__LCA_H__ diff --git a/task_06/src/main.cpp b/task_06/src/main.cpp index 0e4393b..92ac25f 100644 --- a/task_06/src/main.cpp +++ b/task_06/src/main.cpp @@ -1,3 +1,12 @@ #include +#include +#include "lca.h" -int main() { return 0; } + +int main() { + std::vector> g = {{0,1,2},{3,4},{},{},{}}; + std::cout<<"as"; + auto a = lca(g, {{3,4},{3,5}}); + std::cout< +#include "lca.h" -TEST(TopologySort, Simple) { - ASSERT_EQ(1, 1); // Stack [] +TEST(TEST, Simple) { + std::vector> g = {{1,2},{3,4},{},{},{}}; + std::cout<<"as"; + auto a = lca(g, {{3,4},{3,5}}); + ASSERT_TRUE(a[0]=1&&a[1]==0); +} +TEST(TEST, Simple1) { + std::vector> g = {{1},{2},{3},{4},{}}; + std::cout<<"as"; + auto a = lca(g, {{3,4},{1,4},{4,1}}); + ASSERT_TRUE(a[0]=3&&a[1]==1&&a[2]==1)< Date: Thu, 16 Jan 2025 14:13:39 +0300 Subject: [PATCH 3/7] clang format --- task_02/src/main.cpp | 26 ++++---- task_02/src/solution.cpp | 39 +++++------ task_02/src/solution.h | 16 ++--- task_02/src/stack.cpp | 12 +++- task_02/src/test.cpp | 53 +++++++-------- task_03/src/main.cpp | 39 ++++++----- task_03/src/solution.cpp | 60 ++++++++--------- task_03/src/solution.h | 19 +++--- task_03/src/test.cpp | 70 ++++++++++---------- task_04/src/deixtra.cpp | 21 ++---- task_04/src/deixtra.h | 16 ++--- task_04/src/main.cpp | 19 +++--- task_04/src/test.cpp | 36 +++++----- task_05/src/main.cpp | 8 +-- task_05/src/rmq.cpp | 65 +++++++++--------- task_05/src/rmq.h | 4 +- task_05/src/test.cpp | 34 ++++------ task_06/src/lca.cpp | 68 +++++++++---------- task_06/src/lca.h | 7 +- task_06/src/main.cpp | 9 ++- task_06/src/test.cpp | 16 ++--- tidi.yaml | 138 +++++++++++++++++++++++++++++++++++++++ 22 files changed, 428 insertions(+), 347 deletions(-) create mode 100644 tidi.yaml diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index 85f6501..cfd5cde 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -24,16 +24,13 @@ int main() { std::vector nodes; - int n, k=0, tmp, N; - N=4; - tmp=4; // колич + int n, k = 0, tmp, N; + N = 4; + tmp = 4; // колич nodes.resize(N); // список ребер - std::vector> loh={{0,1}, - {1,2}, - {2,3}, - {0,2}}; - while (k> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; + while (k < tmp) { nodes[loh[k].first].neighbours.push_back(loh[k].second); nodes[loh[k].second].neighbours.push_back(loh[k].first); k++; @@ -52,15 +49,14 @@ int main() { auto ans = solution(nodes); - std::cout<<"\n\n"< #include - static std::vector h, d; static std::vector used; static std::vector lockers; -static std::vector> bridges; - +static std::vector> bridges; -void dfs_lockers( std::vector &nodes, int v = 0, int p = -1){ +void dfs_lockers(std::vector& nodes, int v = 0, int p = -1) { used[v] = 1; d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); int children = 0; @@ -21,10 +19,10 @@ void dfs_lockers( std::vector &nodes, int v = 0, int p = -1){ else { dfs_lockers(nodes, u, v); d[v] = std::min(d[v], d[u]); - if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно - if(h[v]!=d[u]) + if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно + if (h[v] != d[u]) bridges.push_back(std::pair(v, u)); - if(p!=-1) + if (p != -1) lockers.push_back(v); } children++; @@ -34,45 +32,40 @@ void dfs_lockers( std::vector &nodes, int v = 0, int p = -1){ if (p == -1 && children > 1) { lockers.push_back(v); } - } -void dfs_bridges(std::vector &nodes, int v = 0, int p = -1){ +void dfs_bridges(std::vector& nodes, int v = 0, int p = -1) { used[v] = true; d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); for (auto u : nodes[v].neighbours) { if (u != p) { - if (used[u]) // если ребро обратное + if (used[u]) // если ребро обратное d[v] = std::min(d[v], h[u]); - else { // если ребро прямое + else { // если ребро прямое dfs_bridges(nodes, u, v); d[v] = std::min(d[v], d[u]); if (h[v] < d[u]) { bridges.push_back(std::pair(v, u)); } - } + } } } - } -std::pair>,std::vector> solution(std::vector nodes){ +std::pair>, std::vector> solution( + std::vector nodes) { used.resize(nodes.size()); h.resize(nodes.size()); d.resize(nodes.size()); lockers.clear(); bridges.clear(); - for(int i = 0; i nc = nodes; dfs_lockers(nodes); - - - return std::pair>,std::vector>(bridges,lockers); - + return std::pair>, std::vector>(bridges, + lockers); } - - diff --git a/task_02/src/solution.h b/task_02/src/solution.h index 6491517..a1211ba 100644 --- a/task_02/src/solution.h +++ b/task_02/src/solution.h @@ -1,21 +1,21 @@ #ifndef __SOLUTION_H__ #define __SOLUTION_H__ -#include #include -#include #include +#include #include +#include class node { -public: + public: std::vector neighbours; int id; - bool locked = false; // - bool flag = false; // белая + bool locked = false; // + bool flag = false; // белая }; +std::pair>, std::vector> solution( + std::vector nodes); -std::pair>,std::vector> solution(std::vector nodes); - -#endif // __SOLUTION_H__ +#endif // __SOLUTION_H__ diff --git a/task_02/src/stack.cpp b/task_02/src/stack.cpp index 8ca8990..57af34e 100644 --- a/task_02/src/stack.cpp +++ b/task_02/src/stack.cpp @@ -2,7 +2,9 @@ #include -void Stack::Push(int value) { data_.push(value); } +void Stack::Push(int value) { + data_.push(value); +} int Stack::Pop() { auto result = data_.top(); @@ -10,7 +12,9 @@ int Stack::Pop() { return result; } -void MinStack::Push(int value) { data_.push_back(value); } +void MinStack::Push(int value) { + data_.push_back(value); +} int MinStack::Pop() { auto result = data_.back(); @@ -18,4 +22,6 @@ int MinStack::Pop() { return result; } -int MinStack::GetMin() { return *std::min_element(data_.begin(), data_.end()); } \ No newline at end of file +int MinStack::GetMin() { + return *std::min_element(data_.begin(), data_.end()); +} \ No newline at end of file diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 9187d2c..3b35d68 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -2,22 +2,18 @@ #include #include - #include "solution.h" TEST(StackTest, Simple) { std::vector nodes; - int n, k=0, tmp, N; - N=4; - tmp=4; // колич + int n, k = 0, tmp, N; + N = 4; + tmp = 4; // колич nodes.resize(N); // список ребер - std::vector> loh={{0,1}, - {1,2}, - {2,3}, - {0,2}}; - while (k> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; + while (k < tmp) { nodes[loh[k].first].neighbours.push_back(loh[k].second); nodes[loh[k].second].neighbours.push_back(loh[k].first); k++; @@ -27,34 +23,31 @@ TEST(StackTest, Simple) { bool flag = true; ans = solution(nodes); - std::vector> assertionb = {{2,3}}; + std::vector> assertionb = {{2, 3}}; ASSERT_TRUE(assertionb.size() == ans.first.size()); - for(int i = 0;i assertionn = {2}; ASSERT_TRUE(assertionn.size() == ans.second.size()); - for(int i = 0;i nodes; - int n, k=0, tmp, N; - N=4; + int n, k = 0, tmp, N; + N = 4; nodes.resize(N); // список ребер - std::vector> loh={{0,1}, - {1,2}, - {2,3}, - {0,2}, - {0,3}}; - tmp=loh.size(); // колич - while (k> loh = { + {0, 1}, {1, 2}, {2, 3}, {0, 2}, {0, 3}}; + tmp = loh.size(); // колич + while (k < tmp) { nodes[loh[k].first].neighbours.push_back(loh[k].second); nodes[loh[k].second].neighbours.push_back(loh[k].first); k++; @@ -64,16 +57,16 @@ TEST(MinStackTest, SimpleNoBriges) { bool flag = true; ans = solution(nodes); - std::vector> assertionb = {}; + std::vector> assertionb = {}; ASSERT_TRUE(assertionb.size() == ans.first.size()); - for(int i = 0;i assertionn = {}; ASSERT_TRUE(assertionn.size() == ans.second.size()); - for(int i = 0;i #include "solution.h" - int main() { - std::vector> expected = {{0,-1,2,-2,1},{999,0,3,-1,2},{1000,998,0,997,1000},{1000,1,4,0,3},{997,-2,1,-3,0}}; + std::vector> expected = {{0, -1, 2, -2, 1}, + {999, 0, 3, -1, 2}, + {1000, 998, 0, 997, 1000}, + {1000, 1, 4, 0, 3}, + {997, -2, 1, -3, 0}}; std::vector nodes; - std::vector edges = {0, -1, 4, 1000, 1000, - 1000, 0, 3, 2, 2, - 1000, 1000, 0, 1000, 1000, - 1000, 1, 5, 1000, 1000, - 1000, 1000, 1000, -3, 1000}; - int n=5,tmp; + std::vector edges = {0, -1, 4, 1000, 1000, 1000, 0, 3, 2, + 2, 1000, 1000, 0, 1000, 1000, 1000, 1, 5, + 1000, 1000, 1000, 1000, 1000, -3, 1000}; + int n = 5, tmp; nodes.resize(n); - for(int i = 0; i #include - - -void deixtra(std::vector &nodes, int start){ +void deixtra(std::vector& nodes, int start) { std::priority_queue> qqe; // {len, id} - node *current; + node* current; int tmp; - for(auto &i:nodes){ + for (auto& i : nodes) { i.len = std::numeric_limits::max(); } - nodes[start].len=0; + nodes[start].len = 0; - qqe.push({0,start}); + qqe.push({0, start}); while (!qqe.empty()) { - current= &nodes[qqe.top().second]; + current = &nodes[qqe.top().second]; int dst = qqe.top().first; qqe.pop(); if (current->len < dst) { continue; } - for (auto &i: current->neighbours) { + for (auto& i : current->neighbours) { int n_dst = dst + i.second; if (n_dst < nodes[i.first].len) { nodes[i.first].len = n_dst; @@ -33,31 +31,28 @@ void deixtra(std::vector &nodes, int start){ } } } - - } - -bool bellford(std::vector &nodes/*, int start*/){ - int tmp=0; +bool bellford(std::vector& nodes /*, int start*/) { + int tmp = 0; /*node s;*/ - bool flag=false; - for(auto &i:nodes){ + bool flag = false; + for (auto& i : nodes) { /*s.neighbours.push_back({i.id, 0});*/ i.pot = 0; } - while (nodes.size()>=(tmp++)) { - for (auto &i: nodes) { - for (auto &j: i.neighbours) { + while (nodes.size() >= (tmp++)) { + for (auto& i : nodes) { + for (auto& j : i.neighbours) { int n_dst = i.pot + j.second; if (n_dst < nodes[j.first].pot) { /*std::cout< &nodes/*, int start*/){ return false; } -std::vector> jonson(std::vector nodes){ - std::vector> ret(nodes.size(), std::vector(nodes.size(), std::numeric_limits::min())); - if(!bellford(nodes)){ +std::vector> jonson(std::vector nodes) { + std::vector> ret( + nodes.size(), + std::vector(nodes.size(), std::numeric_limits::min())); + if (!bellford(nodes)) { /*std::cout<<"wrong!";*/ return ret; } - for(auto &i:nodes){ - for(auto &j:i.neighbours){ - j.second = j.second+nodes[j.first].pot-i.pot; + for (auto& i : nodes) { + for (auto& j : i.neighbours) { + j.second = j.second + nodes[j.first].pot - i.pot; } } - for(int i = 0; i #include - class node { -public: - std::vector> neighbours; // {id, size} + public: + std::vector> neighbours; // {id, size} int id; - int len=0; - int pot=0; - bool locked = false; // + int len = 0; + int pot = 0; + bool locked = false; // bool wisited = false; }; +void deixtra(std::vector& nodes, int start); -void deixtra(std::vector &nodes, int start); - - -bool bellford(std::vector &nodes/*, int start*/); +bool bellford(std::vector& nodes /*, int start*/); std::vector> jonson(std::vector nodes); -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index e2c1f1a..3bf4fb6 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -4,70 +4,68 @@ TEST(Deixtra, Simple) { std::vector nodes; - std::vector edges = {0, 1, 1, - 4, 0, 1, - 2, 1, 0}; - int n=3,start=1,finish=0,tmp; + std::vector edges = {0, 1, 1, 4, 0, 1, 2, 1, 0}; + int n = 3, start = 1, finish = 0, tmp; nodes.resize(n); - for(int i = 0; i nodes; - std::vector edges = {0, 1, 1, - 4, 0, 7, - 2, 1, 0}; - int n=3,start=1,finish=0,tmp; + std::vector edges = {0, 1, 1, 4, 0, 7, 2, 1, 0}; + int n = 3, start = 1, finish = 0, tmp; nodes.resize(n); - for(int i = 0; i> expected = {{0,-1,2,-2,1},{999,0,3,-1,2},{1000,998,0,997,1000},{1000,1,4,0,3},{997,-2,1,-3,0}}; + std::vector> expected = {{0, -1, 2, -2, 1}, + {999, 0, 3, -1, 2}, + {1000, 998, 0, 997, 1000}, + {1000, 1, 4, 0, 3}, + {997, -2, 1, -3, 0}}; std::vector nodes; - std::vector edges = {0, -1, 4, 1000, 1000, - 1000, 0, 3, 2, 2, - 1000, 1000, 0, 1000, 1000, - 1000, 1, 5, 1000, 1000, - 1000, 1000, 1000, -3, 1000}; - int n=5,tmp; + std::vector edges = {0, -1, 4, 1000, 1000, 1000, 0, 3, 2, + 2, 1000, 1000, 0, 1000, 1000, 1000, 1, 5, + 1000, 1000, 1000, 1000, 1000, -3, 1000}; + int n = 5, tmp; nodes.resize(n); - for(int i = 0; i #include - - -void deixtra(std::vector &nodes, int start){ +void deixtra(std::vector& nodes, int start) { std::priority_queue> qqe; // {len, id} - node *current; + node* current; int tmp; - for(auto &i:nodes){ + for (auto& i : nodes) { i.len = std::numeric_limits::max(); } - nodes[start].len=0; + nodes[start].len = 0; - qqe.push({0,start}); + qqe.push({0, start}); while (!qqe.empty()) { - current= &nodes[qqe.top().second]; + current = &nodes[qqe.top().second]; int dst = qqe.top().first; qqe.pop(); if (current->len < dst) { continue; } - for (auto &i: current->neighbours) { + for (auto& i : current->neighbours) { int n_dst = dst + i.second; if (n_dst < nodes[i.first].len) { nodes[i.first].len = n_dst; @@ -31,9 +29,4 @@ void deixtra(std::vector &nodes, int start){ } } } - - } - - - diff --git a/task_04/src/deixtra.h b/task_04/src/deixtra.h index 35b4331..221b311 100644 --- a/task_04/src/deixtra.h +++ b/task_04/src/deixtra.h @@ -4,21 +4,15 @@ #include #include - class node { -public: - std::vector> neighbours; // {id, size} + public: + std::vector> neighbours; // {id, size} int id; int len; - bool locked = false; // + bool locked = false; // bool wisited = false; }; +void deixtra(std::vector& nodes, int start); -void deixtra(std::vector &nodes, int start); - - - - - -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_04/src/main.cpp b/task_04/src/main.cpp index abbcc8f..fa853fc 100644 --- a/task_04/src/main.cpp +++ b/task_04/src/main.cpp @@ -2,24 +2,23 @@ #include #include "deixtra.h" -int main() { +int main() { std::vector nodes; - int n,start,finish,tmp; - std::cin >> n >> start >>finish; + int n, start, finish, tmp; + std::cin >> n >> start >> finish; nodes.resize(n); - for(int i = 0; i>tmp; - if(i==j){ + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + std::cin >> tmp; + if (i == j) { continue; } nodes[i].neighbours.push_back({j, tmp}); } } - deixtra(nodes, start-1); + deixtra(nodes, start - 1); - - std::cout< nodes; - std::vector edges = {0, 1, 1, - 4, 0, 1, - 2, 1, 0}; - int n=3,start=1,finish=0,tmp; + std::vector edges = {0, 1, 1, 4, 0, 1, 2, 1, 0}; + int n = 3, start = 1, finish = 0, tmp; nodes.resize(n); - for(int i = 0; i nodes; - std::vector edges = {0, 1, 1, - 4, 0, 7, - 2, 1, 0}; - int n=3,start=1,finish=0,tmp; + std::vector edges = {0, 1, 1, 4, 0, 7, 2, 1, 0}; + int n = 3, start = 1, finish = 0, tmp; nodes.resize(n); - for(int i = 0; i #include "rmq.h" - -int main() { - int a[] = {1,2,3,-1,5,6}; - auto ans = rmq(a, 6, {{0,2}}); +int main() { + int a[] = {1, 2, 3, -1, 5, 6}; + auto ans = rmq(a, 6, {{0, 2}}); std::cout << ans[0]; - } diff --git a/task_05/src/rmq.cpp b/task_05/src/rmq.cpp index 502fc53..86c447d 100644 --- a/task_05/src/rmq.cpp +++ b/task_05/src/rmq.cpp @@ -1,22 +1,24 @@ #include "rmq.h" #include #include +#include #include #include -#include -const int powers[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144}; +const int powers[] = {1, 2, 4, 8, 16, 32, 64, + 128, 256, 512, 1024, 2048, 4096, 8192, + 16384, 32768, 65536, 131072, 262144}; -std::vector rmq(int* A, int sz, std::vector> brd){ +std::vector rmq(int* A, int sz, std::vector> brd) { std::vector> minn; std::vector ret; minn.push_back({}); - minn[0].assign(A,A+sz); - int tmp=1; - while(minn[tmp-1].size()>2){ + minn[0].assign(A, A + sz); + int tmp = 1; + while (minn[tmp - 1].size() > 2) { minn.push_back({}); - for(int i=1;i rmq(int* A, int sz, std::vector> brd){ tmp++; } - for(auto &i:brd){ - tmp = i.second-i.first; + for (auto& i : brd) { + tmp = i.second - i.first; int minC = std::numeric_limits::max(); - if(tmp<8){ - for(int j = i.first; j<=i.second; j++){ - minC = std::min(minC,A[j]); + if (tmp < 8) { + for (int j = i.first; j <= i.second; j++) { + minC = std::min(minC, A[j]); } ret.push_back(minC); continue; } int j = minn.size(); - while(powers[j]>tmp){ + while (powers[j] > tmp) { j--; } - j--; - int start = i.first/powers[j], stop = i.second/powers[j]; + j--; + int start = i.first / powers[j], stop = i.second / powers[j]; /*std::cout <minn[k][stop]&&k>0){ - stop=stop*powers[j]; - while(k>0){ + if (minC > minn[k][stop] && k > 0) { + stop = stop * powers[j]; + while (k > 0) { k--; - for(;stop+powers[k]<=i.second;stop+=powers[k]){ - minC = std::min(minC, minn[k][stop/powers[k]]); + for (; stop + powers[k] <= i.second; stop += powers[k]) { + minC = std::min(minC, minn[k][stop / powers[k]]); } } } k = j; - if(minC>minn[k][start]&&k>0){ - start=(start+1)*powers[j]; - while((--k)>=0){ + if (minC > minn[k][start] && k > 0) { + start = (start + 1) * powers[j]; + while ((--k) >= 0) { /*std::cout<=i.first;start-=powers[k]){ - /*std::cout<< "\n"<= i.first; start -= powers[k]) { + /*std::cout<< "\n"< rmq(int* A, int sz, std::vector> brd){ minC = std::min(minC, A[i.second]); ret.push_back(minC); } - return ret; + return ret; } - - - - - diff --git a/task_05/src/rmq.h b/task_05/src/rmq.h index 10ed522..98628ca 100644 --- a/task_05/src/rmq.h +++ b/task_05/src/rmq.h @@ -2,8 +2,6 @@ #include #ifndef __RMQ_H__ - std::vector rmq(int* A, int size, std::vector> brd); - -#endif // !__RMQ_H__ +#endif // !__RMQ_H__ diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 06b84d5..3a422f9 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -1,47 +1,41 @@ -#include #include +#include #include #include #include #include "rmq.h" -int ROFLS_KATKA(int *A, int start, int stop){ +int ROFLS_KATKA(int* A, int start, int stop) { int mn = std::numeric_limits::max(); - for(int i = start;i<=stop;i++){ - mn = std::min(A[i],mn); + for (int i = start; i <= stop; i++) { + mn = std::min(A[i], mn); } return mn; } - TEST(Test, Simple) { - int a[] = {1,2,3,-1,5,6}; - auto ans = rmq(a, 6, {{0,2}}); - ASSERT_TRUE(ans[0]==ROFLS_KATKA(a, 0, 2)); + int a[] = {1, 2, 3, -1, 5, 6}; + auto ans = rmq(a, 6, {{0, 2}}); + ASSERT_TRUE(ans[0] == ROFLS_KATKA(a, 0, 2)); } - TEST(Test, Rand) { - int a[50],tmp = 0; + int a[50], tmp = 0; srand(22848); std::vector> dd; - for(int i = 0;i<=40;i++){ - for(int j = i;j<=40;j++){ - dd.push_back({i,j}); + for (int i = 0; i <= 40; i++) { + for (int j = i; j <= 40; j++) { + dd.push_back({i, j}); } a[i] = rand(); } auto ans = rmq(a, 50, dd); - for(int i = 0;i<40;i++){ - for(int j = i;j<=40;j++){ - ASSERT_TRUE(ans[tmp]==ROFLS_KATKA(a, i, j))< #include -#include - +#include static int l; static std::vector tin, tout; static int timer; -static std::vector < std::vector > up; - -void dfs (int v, std::vector> &g, int p = 0) { - tin[v] = ++timer; - up[v][0] = p; - for (int i=1; i<=l; ++i) - up[v][i] = up[up[v][i-1]][i-1]; - for (size_t i=0; i> up; + +void dfs(int v, std::vector>& g, int p = 0) { + tin[v] = ++timer; + up[v][0] = p; + for (int i = 1; i <= l; ++i) + up[v][i] = up[up[v][i - 1]][i - 1]; + for (size_t i = 0; i < g[v].size(); ++i) { + int to = g[v][i]; + if (to != p) + dfs(to, g, v); + } + tout[v] = ++timer; } -bool upper (int a, int b) { - return tin[a] <= tin[b] && tout[a] >= tout[b]; +bool upper(int a, int b) { + return tin[a] <= tin[b] && tout[a] >= tout[b]; } -std::vector lca (std::vector> &g, std::vector> dd) { +std::vector lca(std::vector>& g, + std::vector> dd) { tin.clear(), tout.clear(), up.clear(); - l=0; - tin.resize (g.size()), tout.resize (g.size()), up.resize (g.size()); + l = 0; + tin.resize(g.size()), tout.resize(g.size()), up.resize(g.size()); std::vector ret = {}; l = 0; - while ((1<=0; --i) - if (! upper (up[a][i], b)) + for (int i = l; i >= 0; --i) + if (!upper(up[a][i], b)) a = up[a][i]; ret.push_back(up[a][0]); } return ret; } - - - - - - diff --git a/task_06/src/lca.h b/task_06/src/lca.h index df33c74..9e092b1 100644 --- a/task_06/src/lca.h +++ b/task_06/src/lca.h @@ -2,8 +2,7 @@ #define __LCA_H__ #include +std::vector lca(std::vector>& g, + std::vector> dd); -std::vector lca (std::vector> &g, std::vector> dd); - - -#endif // !__LCA_H__ +#endif // !__LCA_H__ diff --git a/task_06/src/main.cpp b/task_06/src/main.cpp index 92ac25f..83471b3 100644 --- a/task_06/src/main.cpp +++ b/task_06/src/main.cpp @@ -2,11 +2,10 @@ #include #include "lca.h" - int main() { - std::vector> g = {{0,1,2},{3,4},{},{},{}}; - std::cout<<"as"; - auto a = lca(g, {{3,4},{3,5}}); - std::cout<> g = {{0, 1, 2}, {3, 4}, {}, {}, {}}; + std::cout << "as"; + auto a = lca(g, {{3, 4}, {3, 5}}); + std::cout << a[0] << " " << a[1]; return 0; } diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index 36cbe8b..6599f53 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -2,14 +2,14 @@ #include "lca.h" TEST(TEST, Simple) { - std::vector> g = {{1,2},{3,4},{},{},{}}; - std::cout<<"as"; - auto a = lca(g, {{3,4},{3,5}}); - ASSERT_TRUE(a[0]=1&&a[1]==0); + std::vector> g = {{1, 2}, {3, 4}, {}, {}, {}}; + std::cout << "as"; + auto a = lca(g, {{3, 4}, {3, 5}}); + ASSERT_TRUE(a[0] = 1 && a[1] == 0); } TEST(TEST, Simple1) { - std::vector> g = {{1},{2},{3},{4},{}}; - std::cout<<"as"; - auto a = lca(g, {{3,4},{1,4},{4,1}}); - ASSERT_TRUE(a[0]=3&&a[1]==1&&a[2]==1)<> g = {{1}, {2}, {3}, {4}, {}}; + std::cout << "as"; + auto a = lca(g, {{3, 4}, {1, 4}, {4, 1}}); + ASSERT_TRUE(a[0] = 3 && a[1] == 1 && a[2] == 1) << a[1]; } diff --git a/tidi.yaml b/tidi.yaml new file mode 100644 index 0000000..1c752ab --- /dev/null +++ b/tidi.yaml @@ -0,0 +1,138 @@ +--- +# Configure clang-tidy for this project. + +# Here is an explanation for why some of the checks are disabled: +# +# -google-readability-namespace-comments: the *_CLIENT_NS is a macro, and +# clang-tidy fails to match it against the initial value. +# +# -modernize-use-trailing-return-type: clang-tidy recommends using +# `auto Foo() -> std::string { return ...; }`, we think the code is less +# readable in this form. +# +# --modernize-concat-nested-namespaces: clang-tidy recommends +# `namespace google::cloud {}` over `namespace google { namespace cloud { } }` +# We need to support C++14, which does not supported nested namespaces. +# +# --modernize-use-nodiscard: clang-tidy recommends adding a nodiscard annotation +# to functions where the return value should not be ignored. +# We need to support C++14, which does not supported the annotation. +# +# -modernize-return-braced-init-list: We think removing typenames and using +# only braced-init can hurt readability. +# +# -modernize-avoid-c-arrays: We only use C arrays when they seem to be the +# right tool for the job, such as `char foo[] = "hello"`. In these cases, +# avoiding C arrays often makes the code less readable, and std::array is +# not a drop-in replacement because it doesn't deduce the size. +# +# -performance-move-const-arg: This warning requires the developer to +# know/care more about the implementation details of types/functions than +# should be necessary. For example, `A a; F(std::move(a));` will trigger a +# warning IFF `A` is a trivial type (and therefore the move is +# meaningless). It would also warn if `F` accepts by `const&`, which is +# another detail that the caller need not care about. +# +# -performance-avoid-endl: we would like to turn this on, but there are too +# many legitimate uses in our samples. +# +# -performance-enum-size: Smaller enums may or not may be faster, it depends on +# the architechture. If data size was a consideration, we might decide to +# enable the warnings. +# +# -readability-redundant-declaration: A friend declaration inside a class +# counts as a declaration, so if we also declare that friend outside the +# class in order to document it as part of the public API, that will +# trigger a redundant declaration warning from this check. +# +# -readability-avoid-return-with-void-value: We believe this is idiomatic +# and saves typing, and the intent is obvious. +# +# -readability-function-cognitive-complexity: too many false positives with +# clang-tidy-12. We need to disable this check in macros, and that setting +# only appears in clang-tidy-13. +# +# -bugprone-narrowing-conversions: too many false positives around +# `std::size_t` vs. `*::difference_type`. +# +# -bugprone-easily-swappable-parameters: too many false positives. +# +# -bugprone-implicit-widening-of-multiplication-result: too many false positives. +# Almost any expression of the form `2 * variable` or `long x = a_int * b_int;` +# generates an error. +# +# -bugprone-unchecked-optional-access: too many false positives in tests. +# Despite what the documentation says, this warning appears after +# `ASSERT_TRUE(variable)` or `ASSERT_TRUE(variable.has_value())`. +# +# TODO(#14162): Enable clang-tidy checks. We initially omitted these checks +# because they require large cleanup efforts or were blocking the clang-tidy +# X update. +Checks: > + -*, + abseil-*, + bugprone-*, + google-*, + misc-*, + modernize-*, + performance-*, + portability-*, + readability-*, + -google-readability-braces-around-statements, + -google-readability-namespace-comments, + -google-runtime-references, + -misc-non-private-member-variables-in-classes, + -misc-const-correctness, + -misc-include-cleaner, + -modernize-return-braced-init-list, + -modernize-use-trailing-return-type, + -modernize-concat-nested-namespaces, + -modernize-use-nodiscard, + -modernize-avoid-c-arrays, + -performance-move-const-arg, + -performance-avoid-endl, + -performance-enum-size, + -readability-braces-around-statements, + -readability-identifier-length, + -readability-magic-numbers, + -readability-named-parameter, + -readability-redundant-declaration, + -readability-avoid-return-with-void-value, + -readability-function-cognitive-complexity, + -bugprone-narrowing-conversions, + -bugprone-easily-swappable-parameters, + -bugprone-inc-dec-in-conditions, + -bugprone-implicit-widening-of-multiplication-result, + -bugprone-unchecked-optional-access, + -bugprone-unused-local-non-trivial-variable, + -bugprone-unused-return-value + +# Turn all the warnings from the checks above into errors. +WarningsAsErrors: "*" + +HeaderFilterRegex: "(google/cloud/|generator/).*\\.h$" + +CheckOptions: + - { key: readability-identifier-naming.NamespaceCase, value: lower_case } + - { key: readability-identifier-naming.ClassCase, value: CamelCase } + - { key: readability-identifier-naming.StructCase, value: CamelCase } + - { key: readability-identifier-naming.TemplateParameterCase, value: CamelCase } + - { key: readability-identifier-naming.FunctionCase, value: aNy_CasE } + - { key: readability-identifier-naming.VariableCase, value: lower_case } + - { key: readability-identifier-naming.ClassMemberCase, value: lower_case } + - { key: readability-identifier-naming.ClassMemberSuffix, value: _ } + - { key: readability-identifier-naming.PrivateMemberSuffix, value: _ } + - { key: readability-identifier-naming.ProtectedMemberSuffix, value: _ } + - { key: readability-identifier-naming.EnumConstantCase, value: CamelCase } + - { key: readability-identifier-naming.EnumConstantPrefix, value: k } + - { key: readability-identifier-naming.ConstexprVariableCase, value: CamelCase } + - { key: readability-identifier-naming.ConstexprVariablePrefix, value: k } + - { key: readability-identifier-naming.GlobalConstantCase, value: CamelCase } + - { key: readability-identifier-naming.GlobalConstantPrefix, value: k } + - { key: readability-identifier-naming.MemberConstantCase, value: CamelCase } + - { key: readability-identifier-naming.MemberConstantPrefix, value: k } + - { key: readability-identifier-naming.StaticConstantCase, value: CamelCase } + - { key: readability-identifier-naming.StaticConstantPrefix, value: k } + - { key: readability-implicit-bool-conversion.AllowIntegerConditions, value: 1 } + - { key: readability-implicit-bool-conversion.AllowPointerConditions, value: 1 } + - { key: readability-function-cognitive-complexity.IgnoreMacros, value: 1 } From d9e3c8593ee5fbcd673809fef92a750bc07e52ba Mon Sep 17 00:00:00 2001 From: Ivan Gousev Date: Thu, 16 Jan 2025 14:15:49 +0300 Subject: [PATCH 4/7] clean --- task_01/build/task_01 | Bin 75224 -> 0 bytes task_01/build/task_01_tests | Bin 126504 -> 0 bytes task_01/build/task_01_tests[1]_include.cmake | 5 ----- task_01/build/task_01_tests[1]_tests.cmake | 3 --- task_01/src/a.out | Bin 68056 -> 0 bytes 5 files changed, 8 deletions(-) delete mode 100755 task_01/build/task_01 delete mode 100755 task_01/build/task_01_tests delete mode 100644 task_01/build/task_01_tests[1]_include.cmake delete mode 100644 task_01/build/task_01_tests[1]_tests.cmake delete mode 100755 task_01/src/a.out diff --git a/task_01/build/task_01 b/task_01/build/task_01 deleted file mode 100755 index 5dd60667e44fd03c32079507f0ed180cd5657c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75224 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 KR|VIj@&5pms!cfn diff --git a/task_01/build/task_01_tests b/task_01/build/task_01_tests deleted file mode 100755 index 5b421e51d78cb1a8d6266340b277c2270cdcbc80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126504 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 From 8e523a23ae50288722df47da772a507b87519e11 Mon Sep 17 00:00:00 2001 From: Ivan Gousev Date: Thu, 16 Jan 2025 15:04:26 +0300 Subject: [PATCH 5/7] clang format --- task_01/src/main.cpp | 14 ++++++-------- task_01/src/solution.cpp | 27 +++++++++++--------------- task_01/src/solution.h | 9 +++------ task_01/src/test.cpp | 42 +++++++++++++++++----------------------- 4 files changed, 38 insertions(+), 54 deletions(-) diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 75f2350..3e58656 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -3,12 +3,11 @@ #include #include "solution.h" - int main() { std::vector nodes; std::vector ans; - int N=5; + int N = 5; nodes.resize(N); // список ребер /*nodes[1 2);*/ @@ -19,12 +18,12 @@ int main() { nodes[3].neighbours.push_back(4); nodes[4].neighbours.push_back(1); nodes[4].neighbours.push_back(2); - for(int i =0; i=0;i--){ - std::cout<= 0; i--) { + std::cout << ans[i] << " "; } - return 0; } diff --git a/task_01/src/solution.cpp b/task_01/src/solution.cpp index 1ee80c3..3eb5f61 100644 --- a/task_01/src/solution.cpp +++ b/task_01/src/solution.cpp @@ -1,39 +1,37 @@ #include "solution.h" - - -std::vector solution(std::vector nodes){ +std::vector solution(std::vector nodes) { std::deque gray; std::vector ans; - int N = nodes.size(),tmp=0; - for(int i =0; i=N){ + while (true) { + if (i >= N) { break; } - if(nodes[i].flag==false){ + if (nodes[i].flag == false) { i++; continue; } gray.push_back(i); current = &nodes[i]; - while(gray.size()){ + while (gray.size()) { current = &nodes[gray.back()]; - if(!current->flag){ + if (!current->flag) { gray.pop_back(); continue; } - if(current->neighbours.size()<=current->last){ + if (current->neighbours.size() <= current->last) { ans.push_back(current->id); current->flag = false; gray.pop_back(); @@ -46,7 +44,4 @@ std::vector solution(std::vector nodes){ i++; } return ans; - } - - diff --git a/task_01/src/solution.h b/task_01/src/solution.h index 5951cbe..0db6886 100644 --- a/task_01/src/solution.h +++ b/task_01/src/solution.h @@ -1,17 +1,14 @@ #include -#include #include - +#include class node { -public: + public: std::vector neighbours; int last = 0; int id; - bool flag = true; // белая + bool flag = true; // белая }; - std::vector solution(std::vector nodes); - diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index b8f000e..1d37f28 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -7,32 +7,31 @@ TEST(Test, Simple) { std::vector nodes; std::vector ans; - int N=3; + int N = 3; nodes.resize(N); // список ребер nodes[1].neighbours.push_back(2); nodes[0].neighbours.push_back(2); nodes[0].neighbours.push_back(1); - for(int i =0; i assertion = {0,1,2}; + std::vector assertion = {0, 1, 2}; ASSERT_TRUE(assertion.size() == ans.size()); - for(int i = 0;i nodes; std::vector ans; - int N=5; + int N = 5; nodes.resize(N); // список ребер /*nodes[1 2);*/ @@ -43,31 +42,29 @@ TEST(Test, Simple2) { nodes[3].neighbours.push_back(4); nodes[4].neighbours.push_back(1); nodes[4].neighbours.push_back(2); - for(int i =0; i assertion = {3, 0, 4, 1, 2}; ASSERT_TRUE(assertion.size() == ans.size()); - for(int i = 0;i nodes; std::vector ans; - int N=6; + int N = 6; nodes.resize(N); // список ребер // 0 -> 1 @@ -79,18 +76,15 @@ TEST(Test, Simpl3) { nodes[3].neighbours.push_back(4); nodes[0].neighbours.push_back(3); nodes[4].neighbours.push_back(1); - for(int i =0; i assertion = {5, 2, 0, 3, 4, 1}; ASSERT_TRUE(assertion.size() == ans.size()); - for(int i = 0;i Date: Thu, 16 Jan 2025 15:08:21 +0300 Subject: [PATCH 6/7] clang format -- 2 --- .clang-format | 83 ---------------------------------------- task_01/src/main.cpp | 2 +- task_01/src/solution.cpp | 2 +- task_01/src/solution.h | 4 +- task_02/src/main.cpp | 8 ++-- task_02/src/solution.cpp | 15 ++++---- task_02/src/solution.h | 12 +++--- task_02/src/stack.cpp | 12 ++---- task_02/src/stack.hpp | 8 ++-- task_02/src/test.cpp | 4 +- task_03/src/main.cpp | 2 +- task_03/src/solution.cpp | 23 ++++++----- task_03/src/solution.h | 12 +++--- task_03/src/test.cpp | 2 +- task_04/src/deixtra.cpp | 10 ++--- task_04/src/deixtra.h | 10 ++--- task_04/src/main.cpp | 2 +- task_04/src/test.cpp | 2 +- task_05/src/main.cpp | 2 +- task_05/src/rmq.cpp | 8 ++-- task_05/src/rmq.h | 4 +- task_05/src/test.cpp | 4 +- task_06/src/lca.cpp | 10 ++--- task_06/src/lca.h | 4 +- task_06/src/main.cpp | 2 +- task_06/src/test.cpp | 2 +- 26 files changed, 78 insertions(+), 171 deletions(-) delete mode 100644 .clang-format diff --git a/.clang-format b/.clang-format deleted file mode 100644 index df2202e..0000000 --- a/.clang-format +++ /dev/null @@ -1,83 +0,0 @@ -# Google C/C++ Code Style settings -# https://clang.llvm.org/docs/ClangFormatStyleOptions.html -# Author: Kehan Xue, kehan.xue (at) gmail.com - -Language: Cpp -BasedOnStyle: Google -AccessModifierOffset: -1 -AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: None -AlignOperands: Align -AllowAllArgumentsOnNextLine: true -AllowAllConstructorInitializersOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: Inline -AllowShortIfStatementsOnASingleLine: Never # To avoid conflict, set this "Never" and each "if statement" should include brace when coding -AllowShortLambdasOnASingleLine: Inline -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterReturnType: None -AlwaysBreakTemplateDeclarations: Yes -BinPackArguments: true -BreakBeforeBraces: Custom -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterStruct: false - AfterControlStatement: Never - AfterEnum: false - AfterFunction: false - AfterNamespace: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - IndentBraces: false - SplitEmptyFunction: false - SplitEmptyRecord: false - SplitEmptyNamespace: false -BreakBeforeBinaryOperators: None -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeColon -BreakInheritanceList: BeforeColon -ColumnLimit: 80 -CompactNamespaces: false -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: true -DerivePointerAlignment: false # Make sure the * or & align on the left -EmptyLineBeforeAccessModifier: LogicalBlock -FixNamespaceComments: true -IncludeBlocks: Preserve -IndentCaseLabels: true -IndentPPDirectives: None -IndentWidth: 2 -KeepEmptyLinesAtTheStartOfBlocks: true -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ObjCSpaceAfterProperty: false -ObjCSpaceBeforeProtocolList: true -PointerAlignment: Left -ReflowComments: false -# SeparateDefinitionBlocks: Always # Only support since clang-format 14 -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -SpaceBeforeCpp11BracedList: false -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 2 -SpacesInAngles: false -SpacesInCStyleCastParentheses: false -SpacesInContainerLiterals: false -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: c++11 -TabWidth: 4 -UseTab: Never diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 3e58656..678fe7c 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,7 +1,7 @@ +#include "solution.h" #include #include #include -#include "solution.h" int main() { std::vector nodes; diff --git a/task_01/src/solution.cpp b/task_01/src/solution.cpp index 3eb5f61..beb3969 100644 --- a/task_01/src/solution.cpp +++ b/task_01/src/solution.cpp @@ -10,7 +10,7 @@ std::vector solution(std::vector nodes) { } /*gray.push_back(0);*/ - node* current; + node *current; tmp = 0; int i = 0; diff --git a/task_01/src/solution.h b/task_01/src/solution.h index 0db6886..0c4c3a6 100644 --- a/task_01/src/solution.h +++ b/task_01/src/solution.h @@ -4,11 +4,11 @@ #include class node { - public: +public: std::vector neighbours; int last = 0; int id; - bool flag = true; // белая + bool flag = true; // белая }; std::vector solution(std::vector nodes); diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index cfd5cde..4240dcc 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -1,13 +1,13 @@ +#include "solution.h" #include #include #include -#include "solution.h" /* ______________________ -/ . \ +/ . \ | ├── main.cpp | -| ├── solution.cpp | +| ├── solution.cpp | | ├── solution.h | | ├── stack.cpp | | ├── stack.hpp | @@ -26,7 +26,7 @@ int main() { int n, k = 0, tmp, N; N = 4; - tmp = 4; // колич + tmp = 4; // колич nodes.resize(N); // список ребер std::vector> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; diff --git a/task_02/src/solution.cpp b/task_02/src/solution.cpp index 820f943..ac8c79b 100644 --- a/task_02/src/solution.cpp +++ b/task_02/src/solution.cpp @@ -1,5 +1,4 @@ #include "solution.h" -#include #include #include @@ -8,7 +7,7 @@ static std::vector used; static std::vector lockers; static std::vector> bridges; -void dfs_lockers(std::vector& nodes, int v = 0, int p = -1) { +void dfs_lockers(std::vector &nodes, int v = 0, int p = -1) { used[v] = 1; d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); int children = 0; @@ -19,7 +18,7 @@ void dfs_lockers(std::vector& nodes, int v = 0, int p = -1) { else { dfs_lockers(nodes, u, v); d[v] = std::min(d[v], d[u]); - if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно + if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно if (h[v] != d[u]) bridges.push_back(std::pair(v, u)); if (p != -1) @@ -33,14 +32,14 @@ void dfs_lockers(std::vector& nodes, int v = 0, int p = -1) { lockers.push_back(v); } } -void dfs_bridges(std::vector& nodes, int v = 0, int p = -1) { +void dfs_bridges(std::vector &nodes, int v = 0, int p = -1) { used[v] = true; d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); for (auto u : nodes[v].neighbours) { if (u != p) { - if (used[u]) // если ребро обратное + if (used[u]) // если ребро обратное d[v] = std::min(d[v], h[u]); - else { // если ребро прямое + else { // если ребро прямое dfs_bridges(nodes, u, v); d[v] = std::min(d[v], d[u]); if (h[v] < d[u]) { @@ -51,8 +50,8 @@ void dfs_bridges(std::vector& nodes, int v = 0, int p = -1) { } } -std::pair>, std::vector> solution( - std::vector nodes) { +std::pair>, std::vector> +solution(std::vector nodes) { used.resize(nodes.size()); h.resize(nodes.size()); d.resize(nodes.size()); diff --git a/task_02/src/solution.h b/task_02/src/solution.h index a1211ba..3bc0a78 100644 --- a/task_02/src/solution.h +++ b/task_02/src/solution.h @@ -8,14 +8,14 @@ #include class node { - public: +public: std::vector neighbours; int id; - bool locked = false; // - bool flag = false; // белая + bool locked = false; // + bool flag = false; // белая }; -std::pair>, std::vector> solution( - std::vector nodes); +std::pair>, std::vector> +solution(std::vector nodes); -#endif // __SOLUTION_H__ +#endif // __SOLUTION_H__ diff --git a/task_02/src/stack.cpp b/task_02/src/stack.cpp index 57af34e..8ca8990 100644 --- a/task_02/src/stack.cpp +++ b/task_02/src/stack.cpp @@ -2,9 +2,7 @@ #include -void Stack::Push(int value) { - data_.push(value); -} +void Stack::Push(int value) { data_.push(value); } int Stack::Pop() { auto result = data_.top(); @@ -12,9 +10,7 @@ int Stack::Pop() { return result; } -void MinStack::Push(int value) { - data_.push_back(value); -} +void MinStack::Push(int value) { data_.push_back(value); } int MinStack::Pop() { auto result = data_.back(); @@ -22,6 +18,4 @@ int MinStack::Pop() { return result; } -int MinStack::GetMin() { - return *std::min_element(data_.begin(), data_.end()); -} \ No newline at end of file +int MinStack::GetMin() { return *std::min_element(data_.begin(), data_.end()); } \ No newline at end of file diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index 138ec40..b594348 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -4,20 +4,20 @@ #include class Stack { - public: +public: void Push(int value); int Pop(); - private: +private: std::stack data_; }; class MinStack { - public: +public: void Push(int value); int Pop(); int GetMin(); - private: +private: std::vector data_; }; diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index 3b35d68..ebd7ee7 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -9,7 +9,7 @@ TEST(StackTest, Simple) { int n, k = 0, tmp, N; N = 4; - tmp = 4; // колич + tmp = 4; // колич nodes.resize(N); // список ребер std::vector> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; @@ -46,7 +46,7 @@ TEST(MinStackTest, SimpleNoBriges) { // список ребер std::vector> loh = { {0, 1}, {1, 2}, {2, 3}, {0, 2}, {0, 3}}; - tmp = loh.size(); // колич + tmp = loh.size(); // колич while (k < tmp) { nodes[loh[k].first].neighbours.push_back(loh[k].second); nodes[loh[k].second].neighbours.push_back(loh[k].first); diff --git a/task_03/src/main.cpp b/task_03/src/main.cpp index 592dc23..04494c6 100644 --- a/task_03/src/main.cpp +++ b/task_03/src/main.cpp @@ -1,5 +1,5 @@ -#include #include "solution.h" +#include int main() { std::vector> expected = {{0, -1, 2, -2, 1}, diff --git a/task_03/src/solution.cpp b/task_03/src/solution.cpp index fba231d..21d7d7e 100644 --- a/task_03/src/solution.cpp +++ b/task_03/src/solution.cpp @@ -1,15 +1,14 @@ #include "solution.h" #include -#include #include #include #include -void deixtra(std::vector& nodes, int start) { - std::priority_queue> qqe; // {len, id} - node* current; +void deixtra(std::vector &nodes, int start) { + std::priority_queue> qqe; // {len, id} + node *current; int tmp; - for (auto& i : nodes) { + for (auto &i : nodes) { i.len = std::numeric_limits::max(); } nodes[start].len = 0; @@ -23,7 +22,7 @@ void deixtra(std::vector& nodes, int start) { if (current->len < dst) { continue; } - for (auto& i : current->neighbours) { + for (auto &i : current->neighbours) { int n_dst = dst + i.second; if (n_dst < nodes[i.first].len) { nodes[i.first].len = n_dst; @@ -33,17 +32,17 @@ void deixtra(std::vector& nodes, int start) { } } -bool bellford(std::vector& nodes /*, int start*/) { +bool bellford(std::vector &nodes /*, int start*/) { int tmp = 0; /*node s;*/ bool flag = false; - for (auto& i : nodes) { + for (auto &i : nodes) { /*s.neighbours.push_back({i.id, 0});*/ i.pot = 0; } while (nodes.size() >= (tmp++)) { - for (auto& i : nodes) { - for (auto& j : i.neighbours) { + for (auto &i : nodes) { + for (auto &j : i.neighbours) { int n_dst = i.pot + j.second; if (n_dst < nodes[j.first].pot) { /*std::cout<> jonson(std::vector nodes) { /*std::cout<<"wrong!";*/ return ret; } - for (auto& i : nodes) { - for (auto& j : i.neighbours) { + for (auto &i : nodes) { + for (auto &j : i.neighbours) { j.second = j.second + nodes[j.first].pot - i.pot; } } diff --git a/task_03/src/solution.h b/task_03/src/solution.h index 8e21b5d..936288b 100644 --- a/task_03/src/solution.h +++ b/task_03/src/solution.h @@ -4,19 +4,19 @@ #include class node { - public: - std::vector> neighbours; // {id, size} +public: + std::vector> neighbours; // {id, size} int id; int len = 0; int pot = 0; - bool locked = false; // + bool locked = false; // bool wisited = false; }; -void deixtra(std::vector& nodes, int start); +void deixtra(std::vector &nodes, int start); -bool bellford(std::vector& nodes /*, int start*/); +bool bellford(std::vector &nodes /*, int start*/); std::vector> jonson(std::vector nodes); -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index 3bf4fb6..51f3adf 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,6 +1,6 @@ +#include "solution.h" #include #include -#include "solution.h" TEST(Deixtra, Simple) { std::vector nodes; diff --git a/task_04/src/deixtra.cpp b/task_04/src/deixtra.cpp index 485ae61..d6f8dbb 100644 --- a/task_04/src/deixtra.cpp +++ b/task_04/src/deixtra.cpp @@ -3,11 +3,11 @@ #include #include -void deixtra(std::vector& nodes, int start) { - std::priority_queue> qqe; // {len, id} - node* current; +void deixtra(std::vector &nodes, int start) { + std::priority_queue> qqe; // {len, id} + node *current; int tmp; - for (auto& i : nodes) { + for (auto &i : nodes) { i.len = std::numeric_limits::max(); } nodes[start].len = 0; @@ -21,7 +21,7 @@ void deixtra(std::vector& nodes, int start) { if (current->len < dst) { continue; } - for (auto& i : current->neighbours) { + for (auto &i : current->neighbours) { int n_dst = dst + i.second; if (n_dst < nodes[i.first].len) { nodes[i.first].len = n_dst; diff --git a/task_04/src/deixtra.h b/task_04/src/deixtra.h index 221b311..1eeeca2 100644 --- a/task_04/src/deixtra.h +++ b/task_04/src/deixtra.h @@ -5,14 +5,14 @@ #include class node { - public: - std::vector> neighbours; // {id, size} +public: + std::vector> neighbours; // {id, size} int id; int len; - bool locked = false; // + bool locked = false; // bool wisited = false; }; -void deixtra(std::vector& nodes, int start); +void deixtra(std::vector &nodes, int start); -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_04/src/main.cpp b/task_04/src/main.cpp index fa853fc..c8bf8c7 100644 --- a/task_04/src/main.cpp +++ b/task_04/src/main.cpp @@ -1,6 +1,6 @@ +#include "deixtra.h" #include #include -#include "deixtra.h" int main() { std::vector nodes; diff --git a/task_04/src/test.cpp b/task_04/src/test.cpp index 2297109..62cf91f 100644 --- a/task_04/src/test.cpp +++ b/task_04/src/test.cpp @@ -1,5 +1,5 @@ -#include #include "deixtra.h" +#include TEST(Deixtra, Simple) { std::vector nodes; diff --git a/task_05/src/main.cpp b/task_05/src/main.cpp index 7fc4b5d..a62617e 100644 --- a/task_05/src/main.cpp +++ b/task_05/src/main.cpp @@ -1,5 +1,5 @@ -#include #include "rmq.h" +#include int main() { int a[] = {1, 2, 3, -1, 5, 6}; diff --git a/task_05/src/rmq.cpp b/task_05/src/rmq.cpp index 86c447d..8fdfea2 100644 --- a/task_05/src/rmq.cpp +++ b/task_05/src/rmq.cpp @@ -1,7 +1,6 @@ #include "rmq.h" #include #include -#include #include #include @@ -9,7 +8,7 @@ const int powers[] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144}; -std::vector rmq(int* A, int sz, std::vector> brd) { +std::vector rmq(int *A, int sz, std::vector> brd) { std::vector> minn; std::vector ret; minn.push_back({}); @@ -26,7 +25,7 @@ std::vector rmq(int* A, int sz, std::vector> brd) { tmp++; } - for (auto& i : brd) { + for (auto &i : brd) { tmp = i.second - i.first; int minC = std::numeric_limits::max(); if (tmp < 8) { @@ -63,7 +62,8 @@ std::vector rmq(int* A, int sz, std::vector> brd) { while ((--k) >= 0) { /*std::cout<= i.first; start -= powers[k]) { - /*std::cout<< "\n"< #ifndef __RMQ_H__ -std::vector rmq(int* A, int size, std::vector> brd); +std::vector rmq(int *A, int size, std::vector> brd); -#endif // !__RMQ_H__ +#endif // !__RMQ_H__ diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 3a422f9..9138b6f 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -1,12 +1,12 @@ -#include #include +#include #include #include #include #include "rmq.h" -int ROFLS_KATKA(int* A, int start, int stop) { +int ROFLS_KATKA(int *A, int start, int stop) { int mn = std::numeric_limits::max(); for (int i = start; i <= stop; i++) { mn = std::min(A[i], mn); diff --git a/task_06/src/lca.cpp b/task_06/src/lca.cpp index c92f2bf..2a4b81d 100644 --- a/task_06/src/lca.cpp +++ b/task_06/src/lca.cpp @@ -7,7 +7,7 @@ static std::vector tin, tout; static int timer; static std::vector> up; -void dfs(int v, std::vector>& g, int p = 0) { +void dfs(int v, std::vector> &g, int p = 0) { tin[v] = ++timer; up[v][0] = p; for (int i = 1; i <= l; ++i) @@ -20,11 +20,9 @@ void dfs(int v, std::vector>& g, int p = 0) { tout[v] = ++timer; } -bool upper(int a, int b) { - return tin[a] <= tin[b] && tout[a] >= tout[b]; -} +bool upper(int a, int b) { return tin[a] <= tin[b] && tout[a] >= tout[b]; } -std::vector lca(std::vector>& g, +std::vector lca(std::vector> &g, std::vector> dd) { tin.clear(), tout.clear(), up.clear(); l = 0; @@ -36,7 +34,7 @@ std::vector lca(std::vector>& g, for (int i = 0; i < g.size(); ++i) up[i].resize(l + 1); dfs(0, g); - for (auto& dds : dd) { + for (auto &dds : dd) { int a = dds.first, b = dds.second; std::cout << "as" << std::endl; if (upper(a, b)) { diff --git a/task_06/src/lca.h b/task_06/src/lca.h index 9e092b1..f74284a 100644 --- a/task_06/src/lca.h +++ b/task_06/src/lca.h @@ -2,7 +2,7 @@ #define __LCA_H__ #include -std::vector lca(std::vector>& g, +std::vector lca(std::vector> &g, std::vector> dd); -#endif // !__LCA_H__ +#endif // !__LCA_H__ diff --git a/task_06/src/main.cpp b/task_06/src/main.cpp index 83471b3..eb3e696 100644 --- a/task_06/src/main.cpp +++ b/task_06/src/main.cpp @@ -1,6 +1,6 @@ +#include "lca.h" #include #include -#include "lca.h" int main() { std::vector> g = {{0, 1, 2}, {3, 4}, {}, {}, {}}; diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index 6599f53..aa2a868 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -1,5 +1,5 @@ -#include #include "lca.h" +#include TEST(TEST, Simple) { std::vector> g = {{1, 2}, {3, 4}, {}, {}, {}}; From 696c4b85d9e9280002f75482657682c6c578120f Mon Sep 17 00:00:00 2001 From: Ivan Gousev Date: Thu, 16 Jan 2025 15:22:06 +0300 Subject: [PATCH 7/7] clang format -- 3 --- task_01/src/main.cpp | 3 ++- task_01/src/solution.h | 4 ++-- task_01/src/test.cpp | 1 + task_02/src/main.cpp | 5 +++-- task_02/src/solution.cpp | 17 ++++++++--------- task_02/src/solution.h | 12 ++++++------ task_02/src/stack.hpp | 8 ++++---- task_02/src/test.cpp | 5 +++-- task_03/src/main.cpp | 3 ++- task_03/src/solution.cpp | 3 ++- task_03/src/solution.h | 8 ++++---- task_03/src/test.cpp | 4 +++- task_04/src/deixtra.cpp | 3 ++- task_04/src/deixtra.h | 8 ++++---- task_04/src/main.cpp | 3 ++- task_04/src/test.cpp | 3 ++- task_05/src/main.cpp | 3 ++- task_05/src/rmq.cpp | 7 +------ task_05/src/rmq.h | 3 ++- task_05/src/test.cpp | 3 ++- task_06/src/lca.cpp | 15 +++++---------- task_06/src/lca.h | 2 +- task_06/src/main.cpp | 3 ++- task_06/src/test.cpp | 3 ++- 24 files changed, 67 insertions(+), 62 deletions(-) diff --git a/task_01/src/main.cpp b/task_01/src/main.cpp index 678fe7c..81af8a1 100644 --- a/task_01/src/main.cpp +++ b/task_01/src/main.cpp @@ -1,8 +1,9 @@ -#include "solution.h" #include #include #include +#include "solution.h" + int main() { std::vector nodes; std::vector ans; diff --git a/task_01/src/solution.h b/task_01/src/solution.h index 0c4c3a6..0db6886 100644 --- a/task_01/src/solution.h +++ b/task_01/src/solution.h @@ -4,11 +4,11 @@ #include class node { -public: + public: std::vector neighbours; int last = 0; int id; - bool flag = true; // белая + bool flag = true; // белая }; std::vector solution(std::vector nodes); diff --git a/task_01/src/test.cpp b/task_01/src/test.cpp index 1d37f28..9f18306 100644 --- a/task_01/src/test.cpp +++ b/task_01/src/test.cpp @@ -1,4 +1,5 @@ #include + #include #include "solution.h" diff --git a/task_02/src/main.cpp b/task_02/src/main.cpp index 4240dcc..af67365 100644 --- a/task_02/src/main.cpp +++ b/task_02/src/main.cpp @@ -1,8 +1,9 @@ -#include "solution.h" #include #include #include +#include "solution.h" + /* ______________________ / . \ @@ -26,7 +27,7 @@ int main() { int n, k = 0, tmp, N; N = 4; - tmp = 4; // колич + tmp = 4; // колич nodes.resize(N); // список ребер std::vector> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; diff --git a/task_02/src/solution.cpp b/task_02/src/solution.cpp index ac8c79b..7cc43dd 100644 --- a/task_02/src/solution.cpp +++ b/task_02/src/solution.cpp @@ -1,4 +1,5 @@ #include "solution.h" + #include #include @@ -18,11 +19,9 @@ void dfs_lockers(std::vector &nodes, int v = 0, int p = -1) { else { dfs_lockers(nodes, u, v); d[v] = std::min(d[v], d[u]); - if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно - if (h[v] != d[u]) - bridges.push_back(std::pair(v, u)); - if (p != -1) - lockers.push_back(v); + if (h[v] <= d[u]) { // корень (p == -1) обрабатываем отдельно + if (h[v] != d[u]) bridges.push_back(std::pair(v, u)); + if (p != -1) lockers.push_back(v); } children++; } @@ -37,9 +36,9 @@ void dfs_bridges(std::vector &nodes, int v = 0, int p = -1) { d[v] = h[v] = (p == -1 ? 0 : h[p] + 1); for (auto u : nodes[v].neighbours) { if (u != p) { - if (used[u]) // если ребро обратное + if (used[u]) // если ребро обратное d[v] = std::min(d[v], h[u]); - else { // если ребро прямое + else { // если ребро прямое dfs_bridges(nodes, u, v); d[v] = std::min(d[v], d[u]); if (h[v] < d[u]) { @@ -50,8 +49,8 @@ void dfs_bridges(std::vector &nodes, int v = 0, int p = -1) { } } -std::pair>, std::vector> -solution(std::vector nodes) { +std::pair>, std::vector> solution( + std::vector nodes) { used.resize(nodes.size()); h.resize(nodes.size()); d.resize(nodes.size()); diff --git a/task_02/src/solution.h b/task_02/src/solution.h index 3bc0a78..a1211ba 100644 --- a/task_02/src/solution.h +++ b/task_02/src/solution.h @@ -8,14 +8,14 @@ #include class node { -public: + public: std::vector neighbours; int id; - bool locked = false; // - bool flag = false; // белая + bool locked = false; // + bool flag = false; // белая }; -std::pair>, std::vector> -solution(std::vector nodes); +std::pair>, std::vector> solution( + std::vector nodes); -#endif // __SOLUTION_H__ +#endif // __SOLUTION_H__ diff --git a/task_02/src/stack.hpp b/task_02/src/stack.hpp index b594348..138ec40 100644 --- a/task_02/src/stack.hpp +++ b/task_02/src/stack.hpp @@ -4,20 +4,20 @@ #include class Stack { -public: + public: void Push(int value); int Pop(); -private: + private: std::stack data_; }; class MinStack { -public: + public: void Push(int value); int Pop(); int GetMin(); -private: + private: std::vector data_; }; diff --git a/task_02/src/test.cpp b/task_02/src/test.cpp index ebd7ee7..7f78732 100644 --- a/task_02/src/test.cpp +++ b/task_02/src/test.cpp @@ -1,5 +1,6 @@ #include + #include #include "solution.h" @@ -9,7 +10,7 @@ TEST(StackTest, Simple) { int n, k = 0, tmp, N; N = 4; - tmp = 4; // колич + tmp = 4; // колич nodes.resize(N); // список ребер std::vector> loh = {{0, 1}, {1, 2}, {2, 3}, {0, 2}}; @@ -46,7 +47,7 @@ TEST(MinStackTest, SimpleNoBriges) { // список ребер std::vector> loh = { {0, 1}, {1, 2}, {2, 3}, {0, 2}, {0, 3}}; - tmp = loh.size(); // колич + tmp = loh.size(); // колич while (k < tmp) { nodes[loh[k].first].neighbours.push_back(loh[k].second); nodes[loh[k].second].neighbours.push_back(loh[k].first); diff --git a/task_03/src/main.cpp b/task_03/src/main.cpp index 04494c6..e9457d4 100644 --- a/task_03/src/main.cpp +++ b/task_03/src/main.cpp @@ -1,6 +1,7 @@ -#include "solution.h" #include +#include "solution.h" + int main() { std::vector> expected = {{0, -1, 2, -2, 1}, {999, 0, 3, -1, 2}, diff --git a/task_03/src/solution.cpp b/task_03/src/solution.cpp index 21d7d7e..de593fa 100644 --- a/task_03/src/solution.cpp +++ b/task_03/src/solution.cpp @@ -1,11 +1,12 @@ #include "solution.h" + #include #include #include #include void deixtra(std::vector &nodes, int start) { - std::priority_queue> qqe; // {len, id} + std::priority_queue> qqe; // {len, id} node *current; int tmp; for (auto &i : nodes) { diff --git a/task_03/src/solution.h b/task_03/src/solution.h index 936288b..092f61f 100644 --- a/task_03/src/solution.h +++ b/task_03/src/solution.h @@ -4,12 +4,12 @@ #include class node { -public: - std::vector> neighbours; // {id, size} + public: + std::vector> neighbours; // {id, size} int id; int len = 0; int pot = 0; - bool locked = false; // + bool locked = false; // bool wisited = false; }; @@ -19,4 +19,4 @@ bool bellford(std::vector &nodes /*, int start*/); std::vector> jonson(std::vector nodes); -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_03/src/test.cpp b/task_03/src/test.cpp index 51f3adf..5fc5dc8 100644 --- a/task_03/src/test.cpp +++ b/task_03/src/test.cpp @@ -1,7 +1,9 @@ -#include "solution.h" #include + #include +#include "solution.h" + TEST(Deixtra, Simple) { std::vector nodes; std::vector edges = {0, 1, 1, 4, 0, 1, 2, 1, 0}; diff --git a/task_04/src/deixtra.cpp b/task_04/src/deixtra.cpp index d6f8dbb..9e6113e 100644 --- a/task_04/src/deixtra.cpp +++ b/task_04/src/deixtra.cpp @@ -1,10 +1,11 @@ #include "deixtra.h" + #include #include #include void deixtra(std::vector &nodes, int start) { - std::priority_queue> qqe; // {len, id} + std::priority_queue> qqe; // {len, id} node *current; int tmp; for (auto &i : nodes) { diff --git a/task_04/src/deixtra.h b/task_04/src/deixtra.h index 1eeeca2..0b3b693 100644 --- a/task_04/src/deixtra.h +++ b/task_04/src/deixtra.h @@ -5,14 +5,14 @@ #include class node { -public: - std::vector> neighbours; // {id, size} + public: + std::vector> neighbours; // {id, size} int id; int len; - bool locked = false; // + bool locked = false; // bool wisited = false; }; void deixtra(std::vector &nodes, int start); -#endif // !__DEIXTRA_H__ +#endif // !__DEIXTRA_H__ diff --git a/task_04/src/main.cpp b/task_04/src/main.cpp index c8bf8c7..06a6735 100644 --- a/task_04/src/main.cpp +++ b/task_04/src/main.cpp @@ -1,7 +1,8 @@ -#include "deixtra.h" #include #include +#include "deixtra.h" + int main() { std::vector nodes; int n, start, finish, tmp; diff --git a/task_04/src/test.cpp b/task_04/src/test.cpp index 62cf91f..2784e73 100644 --- a/task_04/src/test.cpp +++ b/task_04/src/test.cpp @@ -1,6 +1,7 @@ -#include "deixtra.h" #include +#include "deixtra.h" + TEST(Deixtra, Simple) { std::vector nodes; std::vector edges = {0, 1, 1, 4, 0, 1, 2, 1, 0}; diff --git a/task_05/src/main.cpp b/task_05/src/main.cpp index a62617e..dd038b3 100644 --- a/task_05/src/main.cpp +++ b/task_05/src/main.cpp @@ -1,6 +1,7 @@ -#include "rmq.h" #include +#include "rmq.h" + int main() { int a[] = {1, 2, 3, -1, 5, 6}; auto ans = rmq(a, 6, {{0, 2}}); diff --git a/task_05/src/rmq.cpp b/task_05/src/rmq.cpp index 8fdfea2..44cfb80 100644 --- a/task_05/src/rmq.cpp +++ b/task_05/src/rmq.cpp @@ -1,4 +1,5 @@ #include "rmq.h" + #include #include #include @@ -18,9 +19,7 @@ std::vector rmq(int *A, int sz, std::vector> brd) { minn.push_back({}); for (int i = 1; i < minn[tmp - 1].size(); i += 2) { minn[tmp].push_back(std::min(minn[tmp - 1][i - 1], minn[tmp - 1][i])); - /*std::cout<::max()); tmp++; } @@ -41,7 +40,6 @@ std::vector rmq(int *A, int sz, std::vector> brd) { } j--; int start = i.first / powers[j], stop = i.second / powers[j]; - /*std::cout < rmq(int *A, int sz, std::vector> brd) { if (minC > minn[k][start] && k > 0) { start = (start + 1) * powers[j]; while ((--k) >= 0) { - /*std::cout<= i.first; start -= powers[k]) { - /*std::cout<< "\n"< #include #ifndef __RMQ_H__ +#define __RMQ_H__ std::vector rmq(int *A, int size, std::vector> brd); -#endif // !__RMQ_H__ +#endif // !__RMQ_H__ diff --git a/task_05/src/test.cpp b/task_05/src/test.cpp index 9138b6f..0c0593e 100644 --- a/task_05/src/test.cpp +++ b/task_05/src/test.cpp @@ -1,5 +1,6 @@ -#include #include + +#include #include #include #include diff --git a/task_06/src/lca.cpp b/task_06/src/lca.cpp index 2a4b81d..0780d24 100644 --- a/task_06/src/lca.cpp +++ b/task_06/src/lca.cpp @@ -10,12 +10,10 @@ static std::vector> up; void dfs(int v, std::vector> &g, int p = 0) { tin[v] = ++timer; up[v][0] = p; - for (int i = 1; i <= l; ++i) - up[v][i] = up[up[v][i - 1]][i - 1]; + for (int i = 1; i <= l; ++i) up[v][i] = up[up[v][i - 1]][i - 1]; for (size_t i = 0; i < g[v].size(); ++i) { int to = g[v][i]; - if (to != p) - dfs(to, g, v); + if (to != p) dfs(to, g, v); } tout[v] = ++timer; } @@ -29,10 +27,8 @@ std::vector lca(std::vector> &g, tin.resize(g.size()), tout.resize(g.size()), up.resize(g.size()); std::vector ret = {}; l = 0; - while ((1 << l) <= g.size()) - ++l; - for (int i = 0; i < g.size(); ++i) - up[i].resize(l + 1); + while ((1 << l) <= g.size()) ++l; + for (int i = 0; i < g.size(); ++i) up[i].resize(l + 1); dfs(0, g); for (auto &dds : dd) { int a = dds.first, b = dds.second; @@ -46,8 +42,7 @@ std::vector lca(std::vector> &g, continue; } for (int i = l; i >= 0; --i) - if (!upper(up[a][i], b)) - a = up[a][i]; + if (!upper(up[a][i], b)) a = up[a][i]; ret.push_back(up[a][0]); } return ret; diff --git a/task_06/src/lca.h b/task_06/src/lca.h index f74284a..d0c17fb 100644 --- a/task_06/src/lca.h +++ b/task_06/src/lca.h @@ -5,4 +5,4 @@ std::vector lca(std::vector> &g, std::vector> dd); -#endif // !__LCA_H__ +#endif // !__LCA_H__ diff --git a/task_06/src/main.cpp b/task_06/src/main.cpp index eb3e696..8ee3b84 100644 --- a/task_06/src/main.cpp +++ b/task_06/src/main.cpp @@ -1,7 +1,8 @@ -#include "lca.h" #include #include +#include "lca.h" + int main() { std::vector> g = {{0, 1, 2}, {3, 4}, {}, {}, {}}; std::cout << "as"; diff --git a/task_06/src/test.cpp b/task_06/src/test.cpp index aa2a868..8d839ee 100644 --- a/task_06/src/test.cpp +++ b/task_06/src/test.cpp @@ -1,6 +1,7 @@ -#include "lca.h" #include +#include "lca.h" + TEST(TEST, Simple) { std::vector> g = {{1, 2}, {3, 4}, {}, {}, {}}; std::cout << "as";