답안 #676155

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
676155 2022-12-29T15:00:45 Z vovamr Paths (RMI21_paths) C++17
56 / 100
461 ms 736 KB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define fi first
#define se second
#define ll long long
#define ld long double
#define sz(x) ((int)(x).size())
#define all(x) 	(x).begin(), (x).end()
#define pb push_back
#define mpp make_pair
#define ve vector
using namespace std;
using namespace __gnu_pbds;
template<class T> using oset = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
const ll inf = 1e18; const int iinf = 1e9;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
template <typename T> inline bool chmin(T& a, T b) { return (a > b ? a = b, 1 : 0); }
template <typename T> inline bool chmax(T& a, T b) { return (a < b ? a = b, 1 : 0); }

const int N = 2000;
const int lg = 11;

int n, k;
ve<pii> gr[N];

int up[N][lg];

ll d[N];
ll mx[N], act[N];

inline void dfs(int v, int p) {
	if (v == p) d[v] = 0;

	up[v][0] = p;
	for (int i = 1; i < lg; ++i) up[v][i] = up[up[v][i - 1]][i - 1];

	mx[v] = v;
	for (auto &[to, w] : gr[v]) {
		if (to == p) continue;
		d[to] = d[v] + w;
		dfs(to, v);
		if (d[mx[to]] > d[mx[v]]) mx[v] = mx[to];
	}
}
inline void dfs1(int v, int p) {
	if (v != p && sz(gr[v]) == 1) {
		int u = v;
		for (int i = lg - 1; ~i; --i) {
			if (mx[up[u][i]] == v) {
				u = up[u][i];
			}
		}
		act[v] = d[v] - d[up[u][0]];
	}
	for (auto &[to, w] : gr[v]) {
		if (to == p) continue;
		dfs1(to, v);
	}
}

inline void solve() {
	cin >> n >> k;
	for (int i = 1; i < n; ++i) {
		int v, u, c;
		cin >> v >> u >> c, --v, --u;
		gr[v].pb({u, c}), gr[u].pb({v, c});
	}

	for (int i = 0; i < n; ++i) {

		ve<ll> ar;

		dfs(i, i);
		dfs1(i, i);

		for (int v = 0; v < n; ++v) {
			if (sz(gr[v]) == 1 && v != i) {
				ar.pb(act[v]);
			}
		}

		ll sum = 0;
		sort(all(ar));
		for (int i = sz(ar) - 1; i >= sz(ar) - k; --i) sum += ar[i];

		cout << sum << '\n';
	}
}

signed main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	int q = 1; // cin >> q;
	while (q--) solve();
	cerr << fixed << setprecision(3) << "Time execution: " << (double)clock() / CLOCKS_PER_SEC << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 4 ms 408 KB Output is correct
4 Correct 4 ms 340 KB Output is correct
5 Correct 4 ms 340 KB Output is correct
6 Correct 3 ms 340 KB Output is correct
7 Correct 4 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 4 ms 408 KB Output is correct
4 Correct 4 ms 340 KB Output is correct
5 Correct 4 ms 340 KB Output is correct
6 Correct 3 ms 340 KB Output is correct
7 Correct 4 ms 340 KB Output is correct
8 Correct 114 ms 500 KB Output is correct
9 Correct 112 ms 624 KB Output is correct
10 Correct 80 ms 480 KB Output is correct
11 Correct 107 ms 512 KB Output is correct
12 Correct 84 ms 504 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 4 ms 408 KB Output is correct
4 Correct 4 ms 340 KB Output is correct
5 Correct 4 ms 340 KB Output is correct
6 Correct 3 ms 340 KB Output is correct
7 Correct 4 ms 340 KB Output is correct
8 Correct 114 ms 500 KB Output is correct
9 Correct 112 ms 624 KB Output is correct
10 Correct 80 ms 480 KB Output is correct
11 Correct 107 ms 512 KB Output is correct
12 Correct 84 ms 504 KB Output is correct
13 Correct 461 ms 736 KB Output is correct
14 Correct 412 ms 636 KB Output is correct
15 Correct 313 ms 588 KB Output is correct
16 Correct 459 ms 616 KB Output is correct
17 Correct 368 ms 704 KB Output is correct
18 Correct 252 ms 580 KB Output is correct
19 Correct 459 ms 592 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 500 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 4 ms 408 KB Output is correct
4 Correct 4 ms 340 KB Output is correct
5 Correct 4 ms 340 KB Output is correct
6 Correct 3 ms 340 KB Output is correct
7 Correct 4 ms 340 KB Output is correct
8 Correct 114 ms 500 KB Output is correct
9 Correct 112 ms 624 KB Output is correct
10 Correct 80 ms 480 KB Output is correct
11 Correct 107 ms 512 KB Output is correct
12 Correct 84 ms 504 KB Output is correct
13 Correct 461 ms 736 KB Output is correct
14 Correct 412 ms 636 KB Output is correct
15 Correct 313 ms 588 KB Output is correct
16 Correct 459 ms 616 KB Output is correct
17 Correct 368 ms 704 KB Output is correct
18 Correct 252 ms 580 KB Output is correct
19 Correct 459 ms 592 KB Output is correct
20 Runtime error 1 ms 500 KB Execution killed with signal 11
21 Halted 0 ms 0 KB -