From dab8347a008c78708c62e271ce21c2af83730629 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Tue, 30 Mar 2021 09:43:56 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=87?= =?UTF-8?q?=D0=B5=D1=82=D0=B2=D1=91=D1=80=D1=82=D1=83=D1=8E=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B4=D0=B0=D1=87=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- graphs/task4.cpp | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 graphs/task4.cpp diff --git a/graphs/task4.cpp b/graphs/task4.cpp new file mode 100644 index 0000000..ff011cc --- /dev/null +++ b/graphs/task4.cpp @@ -0,0 +1,86 @@ +#include +#include +#include + +using namespace std; + +typedef vector> graph; + +void print(graph g) +{ + for (int i = 0; i < int(g.size()); ++i) + { + cout << i + 1 << ": "; + 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; + } +} + +void dfs(int x, graph g, vector *path, vector *used) +{ + (*used)[x] = 1; + path->push_back(x); + for (int i = 0; i < int(g[x].size()); ++i) + { + int node = g[x][i]; + if ((*used)[node] == 0) + dfs(node, g, path, used); + } + +} + +void dfs(int x, graph g, vector *path) +{ + int n = int(g.size()); + vector used(n); + return dfs(x, g, path, &used); +} + + +int main() +{ + cout << "Введите количество вершин: "; + int n; + cin >> n; + + cout << "Введите количество рёбер: "; + int k; + cin >> k; + + graph g(n); + + cout << "o----------------------o" << endl; + cout << "| Нумерация вершин с 1 |" << endl; + cout << "o----------------------o" << endl; + + cout << "Введите рёбра (неориентированные):" << endl; + for (int i = 0; i < k; ++i) + { + int a, b; + cin >> a >> b; + a--; + b--; + g[a].push_back(b); + g[b].push_back(a); + } + + cout << "Введённый граф:" << endl; + print(g); + + vector path; + dfs(0, g, &path); + + if (int(path.size()) == n) + cout << "Граф является связным" << endl; + else + cout << "Граф не является связным" << endl; + + return 0; +} -- cgit v1.2.3