// 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 |
English