제출 #1159860

#제출 시각아이디문제언어결과실행 시간메모리
1159860jmuzhenJanjetina (COCI21_janjetina)C++20
0 / 110
1 ms1864 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

const int MAXN = 2e5 + 5;
int n,k;
vector<vector<pair<int,int>>> adj;

vector<int> sz(MAXN);

int pre=0;
map<int,int>pre2n,n2pre;
void dfs_init(int u, int p) {
	int s = 1;
	pre2n[u]=pre;
	n2pre[pre]=u;
	pre++;
	for (auto [v,w]: adj[u]) {
		if (v==p) continue;
		dfs_init(v,u);
		s += sz[v];
	}
	sz[u] = s;
}

int ans=0;
void dfs(int u, int p, int val) {
	if(val>=k-1) {
		ans += sz[u] * (n-sz[u]);
		return;
	}
	
	for (auto [v,w] : adj[u]) {
		if (v==p)continue;
		dfs(v,u,val+w);
	}
	
}
signed main() {
	cin>>n>>k;
	adj.resize(n+1);
	for (int i = 0; i < n-1; i++) {
			int a,b,w;cin>>a>>b>>w;
			w--;
			adj[a].push_back({b,w});
			adj[b].push_back({a,w});
	}
	dfs_init(1, -1);
	dfs(1,-1,0);
	cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...