제출 #1077158

#제출 시각아이디문제언어결과실행 시간메모리
1077158pawnedPetrol stations (CEOI24_stations)C++17
0 / 100
25 ms6872 KiB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops")

#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define pb push_back
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<int> vi;

const char nl = '\n';

void fastIO() {
	ios::sync_with_stdio(false);
	cin.tie(0);
}

const int MAX = 70005;

ll N, K;

vector<ii> adj[MAX];

int main() {
	fastIO();
	cin>>N>>K;
	for (int i = 0; i < N - 1; i++) {
		int u, v, w;	// w <= 1e9, can be int
		cin>>u>>v>>w;
		adj[u].pb({v, w});
		adj[v].pb({u, w});
	}
	int start = -1;
	for (int i = 0; i < N; i++) {
		if (adj[i].size() == 1)
			start = i;
	}
	vi order;
	vector<bool> vis(N, false);
	queue<int> q;
	q.push(start);
	vis[start] = true;
	while (!q.empty()) {
		int x = q.front();
		q.pop();
		order.pb(x);
		for (ii y : adj[x]) {
			if (!vis[y.fi]) {
				vis[y.fi] = true;
				q.push(y.fi);
			}
		}
	}
/*	cout<<"order: ";
	for (int x : order)
		cout<<x<<" ";
	cout<<endl;*/
	vector<ll> ans(N, 0);
	for (int i = 0; i < N; i++) {
		ll x = order[i];
		ans[i] = (x / K) * (N - 1 - x) + ((N - 1 - x) / K) * x;
	}
//	cout<<"ANSWER: ";
	for (ll x : ans)
		cout<<x<<" ";
	cout<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...