// 2022-5-lin-chodzenie-po-linie.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include <vector> #include <queue> constexpr int MAXN = 2e5 + 6; std::vector<int> edges[MAXN]; bool visited[MAXN]; int t[MAXN]; int dist[MAXN]; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); int n, v; long long dst; std::cin >> n; for (int i = 0; i < n; i++) { std::cin >> t[i]; for (int j = 0; j < i; j++) { if (t[j] > t[i]) { edges[j].push_back(i); edges[i].push_back(j); } } } std::queue<int> bfs; for (int i = 0; i < n; i++) { dst = 0; for (int j = 0; j < n; j++) { visited[j] = false; } bfs.push(i); dist[i] = 0; visited[i] = true; while (!bfs.empty()) { v = bfs.front(); bfs.pop(); for (auto u : edges[v]) { if (!visited[u]) { visited[u] = true; dist[u] = dist[v] + 1; bfs.push(u); dst += dist[u]; } } } std::cout << dst << ' '; } std::cout << '\n'; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | // 2022-5-lin-chodzenie-po-linie.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include <iostream> #include <vector> #include <queue> constexpr int MAXN = 2e5 + 6; std::vector<int> edges[MAXN]; bool visited[MAXN]; int t[MAXN]; int dist[MAXN]; int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); int n, v; long long dst; std::cin >> n; for (int i = 0; i < n; i++) { std::cin >> t[i]; for (int j = 0; j < i; j++) { if (t[j] > t[i]) { edges[j].push_back(i); edges[i].push_back(j); } } } std::queue<int> bfs; for (int i = 0; i < n; i++) { dst = 0; for (int j = 0; j < n; j++) { visited[j] = false; } bfs.push(i); dist[i] = 0; visited[i] = true; while (!bfs.empty()) { v = bfs.front(); bfs.pop(); for (auto u : edges[v]) { if (!visited[u]) { visited[u] = true; dist[u] = dist[v] + 1; bfs.push(u); dst += dist[u]; } } } std::cout << dst << ' '; } std::cout << '\n'; } // Run program: Ctrl + F5 or Debug > Start Without Debugging menu // Debug program: F5 or Debug > Start Debugging menu // Tips for Getting Started: // 1. Use the Solution Explorer window to add/manage files // 2. Use the Team Explorer window to connect to source control // 3. Use the Output window to see build output and other messages // 4. Use the Error List window to view errors // 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project // 6. In the future, to open this project again, go to File > Open > Project and select the .sln file |