Skip to content

Commit fc3e316

Browse files
committed
update graph class (code simplify and beautify)
1 parent efa50c7 commit fc3e316

File tree

7 files changed

+212
-240
lines changed

7 files changed

+212
-240
lines changed

additional_tasks/chem_experiments_chain/src/chem_experiments_chain.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ void Solution(std::istream& is = std::cin, std::ostream& os = std::cout) {
1313
std::string u, v;
1414
is >> u >> v;
1515

16-
graph.AddEdge(u, v);
16+
graph.AddEdge({u, v});
1717
graph.AddVert(u);
1818
graph.AddVert(v);
1919
}

additional_tasks/chem_experiments_chain/src/test.cpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ TEST(SCCSTA_Test, SimpleCycle) {
4949
Graph<int, long> graph;
5050
graph.AddVert(1);
5151
graph.AddVert(2);
52-
graph.AddEdge(1, 2);
53-
graph.AddEdge(2, 1);
52+
graph.AddEdge({1, 2});
53+
graph.AddEdge({2, 1});
5454
auto components = StronglyConnectedComponents(graph);
5555
ASSERT_EQ(components.size(), 1);
5656
ASSERT_EQ(components[0], std::vector<int>({1, 2}));
@@ -62,10 +62,10 @@ TEST(SCCSTA_Test, MultipleCycles) {
6262
graph.AddVert(2);
6363
graph.AddVert(3);
6464
graph.AddVert(4);
65-
graph.AddEdge(1, 2);
66-
graph.AddEdge(2, 1);
67-
graph.AddEdge(3, 4);
68-
graph.AddEdge(4, 3);
65+
graph.AddEdge({1, 2});
66+
graph.AddEdge({2, 1});
67+
graph.AddEdge({3, 4});
68+
graph.AddEdge({4, 3});
6969

7070
auto components = StronglyConnectedComponents(graph);
7171

@@ -86,13 +86,13 @@ TEST(SCCSTA_Test, ComplexGraph) {
8686
graph.AddVert(4);
8787
graph.AddVert(5);
8888
graph.AddVert(6);
89-
graph.AddEdge(1, 2);
90-
graph.AddEdge(2, 3);
91-
graph.AddEdge(3, 1);
92-
graph.AddEdge(4, 5);
93-
graph.AddEdge(5, 6);
94-
graph.AddEdge(6, 4);
95-
graph.AddEdge(2, 4);
89+
graph.AddEdge({1, 2});
90+
graph.AddEdge({2, 3});
91+
graph.AddEdge({3, 1});
92+
graph.AddEdge({4, 5});
93+
graph.AddEdge({5, 6});
94+
graph.AddEdge({6, 4});
95+
graph.AddEdge({2, 4});
9696

9797
auto components = StronglyConnectedComponents(graph);
9898

@@ -111,7 +111,7 @@ TEST(SCCSTA_Test, UndirectedGraph) {
111111
Graph<int, long> graph;
112112
graph.AddVert(1);
113113
graph.AddVert(2);
114-
graph.AddEdge(1, 2);
114+
graph.AddEdge({1, 2});
115115

116116
graph.MakeUndirected();
117117

@@ -121,7 +121,7 @@ TEST(SCCSTA_Test, UndirectedGraph) {
121121
TEST(SCCSTA_Test, SelfLoop) {
122122
Graph<int, long> graph;
123123
graph.AddVert(1);
124-
graph.AddEdge(1, 1);
124+
graph.AddEdge({1, 1});
125125

126126
auto components = StronglyConnectedComponents(graph);
127127

@@ -135,8 +135,8 @@ TEST(SCCSTA_Test, MultipleSelfLoops) {
135135
Graph<int, long> graph;
136136
graph.AddVert(1);
137137
graph.AddVert(2);
138-
graph.AddEdge(1, 1);
139-
graph.AddEdge(2, 2);
138+
graph.AddEdge({1, 1});
139+
graph.AddEdge({2, 2});
140140

141141
auto components = StronglyConnectedComponents(graph);
142142

@@ -152,11 +152,11 @@ TEST(SCCSTA_Test, ConnectedComponents) {
152152
graph.AddVert(2);
153153
graph.AddVert(3);
154154
graph.AddVert(4);
155-
graph.AddEdge(1, 2);
156-
graph.AddEdge(2, 1);
157-
graph.AddEdge(3, 4);
158-
graph.AddEdge(4, 3);
159-
graph.AddEdge(1, 3);
155+
graph.AddEdge({1, 2});
156+
graph.AddEdge({2, 1});
157+
graph.AddEdge({3, 4});
158+
graph.AddEdge({4, 3});
159+
graph.AddEdge({1, 3});
160160

161161
auto components = StronglyConnectedComponents(graph);
162162

additional_tasks/graph/src/test.cpp

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,6 @@ TEST(GraphTest_size_t, CreateGraphWithDuplicateEdges) {
115115
// для скорости работы по умолчанию дубликаты допускаются
116116
Graph<size_t, long> g = Graph<size_t, long>::GraphNonWeighted(edges);
117117

118-
ASSERT_EQ(g.VertsAmount(), 3);
119-
ASSERT_EQ(g.EdgesAmount(), 5);
120-
ASSERT_FALSE(g.IsWeighted());
121-
ASSERT_TRUE(g.IsDirected());
122-
123-
g.RemoveDuplicates();
124-
125118
ASSERT_EQ(g.VertsAmount(), 3);
126119
ASSERT_EQ(g.EdgesAmount(), 3);
127120
ASSERT_FALSE(g.IsWeighted());
@@ -362,15 +355,15 @@ TEST(GraphTest_size_t, AddVert) {
362355
TEST(GraphTest_size_t, AddEdgeUnweighted) {
363356
Graph<size_t, long> g;
364357

365-
g.AddEdge(0, 1);
358+
g.AddEdge({0, 1});
366359
EXPECT_EQ(g.EdgesAmount(), 1);
367360
EXPECT_TRUE(g.ContainsEdge({0, 1}));
368361

369-
g.AddEdge(0, 1);
370-
EXPECT_EQ(g.EdgesAmount(), 2);
362+
g.AddEdge({0, 1});
363+
EXPECT_EQ(g.EdgesAmount(), 1); // теперь в графе только уникальные ребра
371364
EXPECT_TRUE(g.ContainsEdge({0, 1}));
372365

373-
g.AddEdge(2, 3);
366+
g.AddEdge({2, 3});
374367
EXPECT_EQ(g.VertsAmount(), 4);
375368
EXPECT_TRUE(Contains(g.Verts(), size_t(2)));
376369
EXPECT_TRUE(Contains(g.Verts(), size_t(3)));
@@ -379,34 +372,28 @@ TEST(GraphTest_size_t, AddEdgeUnweighted) {
379372
TEST(GraphTest_size_t, AddEdgeWeighted) {
380373
Graph<size_t, long> g;
381374

382-
g.AddEdge(0, 1, 10);
375+
g.AddEdge({0, 1, 10});
383376
EXPECT_EQ(g.EdgesAmount(), 1);
384377
EXPECT_TRUE(g.ContainsEdge({0, 1, 10}));
385378
EXPECT_EQ(g.GetEdgeWeight({0, 1}), 10);
386379

387-
g.AddEdge(0, 1, 15);
388-
389-
// если пользователь решает добавить то же ребро,
390-
// но с другим весом - он сам дурак
391-
392-
// (иначе добавление ребра будет работать за O(E))
393-
394-
g.RemoveDuplicates();
380+
g.AddEdge({0, 1, 15});
395381

396382
EXPECT_EQ(g.EdgesAmount(), 2);
397383
EXPECT_TRUE(g.ContainsEdge({0, 1, 10}));
398384
EXPECT_EQ(g.GetEdgeWeight({0, 1}), 10);
399385

400-
EXPECT_THROW(g.AddEdge(2, 3), std::logic_error);
386+
// Warning
387+
EXPECT_NO_THROW(g.AddEdge({2, 3}));
401388
}
402389

403390
TEST(GraphTest_size_t, RemoveVert) {
404391
Graph<size_t, long> g;
405392
g.AddVert(1);
406393
g.AddVert(2);
407394
g.AddVert(3);
408-
g.AddEdge(1, 2, 5);
409-
g.AddEdge(2, 3, 7);
395+
g.AddEdge({1, 2, 5});
396+
g.AddEdge({2, 3, 7});
410397

411398
ASSERT_NO_THROW(g.RemoveVert(2));
412399
EXPECT_FALSE(Contains(g.Verts(), size_t(2)));
@@ -421,8 +408,8 @@ TEST(GraphTest_size_t, RemoveEdgeByPair) {
421408
g.AddVert(1);
422409
g.AddVert(2);
423410
g.AddVert(3);
424-
g.AddEdge(1, 2, 5);
425-
g.AddEdge(2, 3, 7);
411+
g.AddEdge({1, 2, 5});
412+
g.AddEdge({2, 3, 7});
426413

427414
ASSERT_NO_THROW(g.RemoveEdge({1, 2}));
428415
EXPECT_FALSE(g.ContainsEdge({1, 2}));
@@ -436,8 +423,8 @@ TEST(GraphTest_size_t, RemoveEdgeByTuple) {
436423
g.AddVert(1);
437424
g.AddVert(2);
438425
g.AddVert(3);
439-
g.AddEdge(1, 2, 5);
440-
g.AddEdge(2, 3, 7);
426+
g.AddEdge({1, 2, 5});
427+
g.AddEdge({2, 3, 7});
441428

442429
ASSERT_NO_THROW(g.RemoveEdge({2, 3, 7}));
443430
EXPECT_FALSE(g.ContainsEdge({2, 3, 7}));
@@ -471,8 +458,8 @@ TEST(GraphTest_size_t, AddAndRemoveEdges) {
471458
g.AddVert(2);
472459
g.AddVert(3);
473460

474-
g.AddEdge(1, 2, 5);
475-
g.AddEdge(2, 3, 7);
461+
g.AddEdge({1, 2, 5});
462+
g.AddEdge({2, 3, 7});
476463
EXPECT_EQ(g.EdgesAmount(), 2);
477464
EXPECT_TRUE(g.ContainsEdge({1, 2, 5}));
478465
EXPECT_TRUE(g.ContainsEdge({2, 3, 7}));
@@ -506,8 +493,8 @@ TEST(GraphTest_size_t, RemoveEdgeFromDirectedGraph) {
506493
graph_directed.AddVert(0);
507494
graph_directed.AddVert(1);
508495
graph_directed.AddVert(2);
509-
graph_directed.AddEdge(0, 1, 1);
510-
graph_directed.AddEdge(1, 2, 2);
496+
graph_directed.AddEdge({0, 1, 1});
497+
graph_directed.AddEdge({1, 2, 2});
511498

512499
ASSERT_NO_THROW(graph_directed.RemoveEdge({0, 1}));
513500
ASSERT_FALSE(graph_directed.ContainsEdge({0, 1}));
@@ -519,8 +506,8 @@ TEST(GraphTest_size_t, RemoveEdgeFromUndirectedGraph) {
519506
graph_undirected.AddVert(0);
520507
graph_undirected.AddVert(1);
521508
graph_undirected.AddVert(2);
522-
graph_undirected.AddEdge(0, 1, 1);
523-
graph_undirected.AddEdge(1, 2, 2);
509+
graph_undirected.AddEdge({0, 1, 1});
510+
graph_undirected.AddEdge({1, 2, 2});
524511

525512
graph_undirected.MakeUndirected();
526513

@@ -535,17 +522,17 @@ TEST(GraphTest_size_t, RemoveNonExistentEdgeThrowsException) {
535522
graph_directed.AddVert(0);
536523
graph_directed.AddVert(1);
537524
graph_directed.AddVert(2);
538-
graph_directed.AddEdge(0, 1, 1);
539-
graph_directed.AddEdge(1, 2, 2);
525+
graph_directed.AddEdge({0, 1, 1});
526+
graph_directed.AddEdge({1, 2, 2});
540527

541528
ASSERT_THROW(graph_directed.RemoveEdge({0, 2}), std::invalid_argument);
542529

543530
Graph<size_t, long> graph_undirected{};
544531
graph_undirected.AddVert(0);
545532
graph_undirected.AddVert(1);
546533
graph_undirected.AddVert(2);
547-
graph_undirected.AddEdge(0, 1, 1);
548-
graph_undirected.AddEdge(1, 2, 2);
534+
graph_undirected.AddEdge({0, 1, 1});
535+
graph_undirected.AddEdge({1, 2, 2});
549536

550537
graph_undirected.MakeUndirected();
551538

additional_tasks/petya_and_vasya_labyrinth/src/petya_and_vasya_labyrinth.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ inline void AddEdgesNonDirected(Graph<std::string, long>& graph) {
5151

5252
for (const auto& another_vert : {up_vert, down_vert, right_vert, left_vert})
5353
if (!another_vert.empty() && !graph.ContainsEdge({another_vert, vert}))
54-
graph.AddEdge(vert, another_vert);
54+
graph.AddEdge({vert, another_vert});
5555
}
5656
}
5757

@@ -87,7 +87,7 @@ inline void AddEdgesIterative(Graph<std::string, long>& graph,
8787
for (const auto& another_vert : {up_vert, down_vert, right_vert, left_vert})
8888
if (!another_vert.empty() &&
8989
!graph.ContainsEdge({another_vert, current_vert})) {
90-
graph.AddEdge(current_vert, another_vert);
90+
graph.AddEdge({current_vert, another_vert});
9191
if (another_vert[0] != 'E') s.push(another_vert);
9292
}
9393
}

0 commit comments

Comments
 (0)