-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask1.cpp
More file actions
53 lines (47 loc) · 2.3 KB
/
task1.cpp
File metadata and controls
53 lines (47 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;
int main() {
SetConsoleOutputCP(65001);
int n, m; // количество вершин и ребер
cout << "Введите количество вершин в графе: ";
cin >> n;
cout << "Введите количество рёбер в графе: ";
cin >> m;
vector<vector<pair<int, int>>> adj_list(n + 1); // список смежности
vector<vector<int>> adj_matrix(n + 1, vector<int>(n + 1)); // матрица смежности
cout << "\nТеперь введите каждое ребро графа. Для каждого ребра введите три числа через пробел: номер первой вершины, номер второй вершины и вес ребра." << endl;
cout << "Пример: 1 2 7 (ребро между вершинами 1 и 2 с весом 7)" << endl;
cout << "Введите рёбра:" << endl;
for (int i = 0; i < m; i++) {
int v1, v2, w;
cout << "Ребро " << i + 1 << ": ";
cin >> v1 >> v2 >> w;
adj_list[v1].push_back({ v2, w });
adj_list[v2].push_back({ v1, w });
adj_matrix[v1][v2] = w;
adj_matrix[v2][v1] = w;
}
cout << "\nСписок смежности (для каждой вершины указаны её соседи и веса рёбер):" << endl;
for (int i = 1; i <= n; i++) {
cout << i << ": ";
for (auto j : adj_list[i]) {
cout << "(вершина " << j.first << ", вес " << j.second << ") ";
}
cout << endl;
}
cout << "\nМатрица смежности (на пересечении строки i и столбца j — вес ребра между вершинами i и j, 0 если ребра нет):" << endl;
cout << " ";
for (int j = 1; j <= n; j++) cout << j << " ";
cout << endl;
for (int i = 1; i <= n; i++) {
cout << i << " | ";
for (int j = 1; j <= n; j++) {
cout << adj_matrix[i][j] << " ";
}
cout << endl;
}
cout << "\nГраф успешно считан и выведен в двух представлениях!" << endl;
return 0;
}