diff options
Diffstat (limited to 'graphs/task3.cpp')
| -rw-r--r-- | graphs/task3.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/graphs/task3.cpp b/graphs/task3.cpp index 01f3307..1b4aab6 100644 --- a/graphs/task3.cpp +++ b/graphs/task3.cpp @@ -1,6 +1,7 @@ #include<iostream> #include<stdio.h> #include<vector> +#include<algorithm> using namespace std; @@ -11,11 +12,28 @@ void print(graph g) for (int i = 0; i < int(g.size()); ++i) { cout << i + 1 << ": "; - for (auto node : g[i]) - cout << node + 1 << ", "; - cout << endl; + for (int j = 0; j < int(g[i].size()) - 1; ++j) + cout << g[i][j] + 1 << ", "; + + if (g[i].size() > 0) + cout << g[i].back() + 1; + else + cout << "нет смежных вершин"; + + cout << ";" << endl; } +} +float calc_deg(int x, graph g) +{ + int deg_m = int(g[x].size()); + int deg_p = 0; + for (int i = 0; i < int(g.size()); ++i) + { + if (find(g[i].begin(), g[i].end(), x) != g[i].end()) + ++deg_p; + } + return (deg_m + deg_p) / 2.0f; } int main() @@ -50,7 +68,8 @@ int main() cout << "Степени каждой из вершин:" << endl; for (int i = 0; i < int(g.size()); ++i) { - printf("d(%i) = %i\n", i + 1, int(g[i].size())); + float deg = calc_deg(i, g); + printf("d(%i) = %f\n", i + 1, deg); } return 0; |