| 16457 | 2025-05-01 12:53:43 | peti1234 | Testvérvárosok | cpp17 | Elfogadva 100/100 | 93ms | 7856 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int n,k;
vector<vector<pair<int,int>>> g;
vector<int> sz;
vector<bool> iscent;
int res;
void cent(int v, int tsize, int p=-1){
sz[v]=1;
for (auto [to, c] : g[v]) {
if (to==p || iscent[to]) continue;
cent(to, tsize, v);
sz[v]+=sz[to];
}
if (!res && 2*sz[v]>=tsize) {
res=v;
}
}
vector<int> rem, ans;
ll valasz;
void dfs(int v, int d, int p=-1){
if (iscent[v]) return;
rem.push_back(d%k);
for (auto [to,c] : g[v]){
if (p==to ) continue;
dfs(to, d+c, v);
}
}
void solve(int v, int tsize){
if (iscent[v]) return;
res=0;
cent(v,tsize);
iscent[res]=true;
// res-re szamolas
vector<int> change = {0};
ans[0]=1;
for (auto [to,c] : g[res]){
rem.clear();
dfs(to, c);
for (int i : rem){
change.push_back(i);
valasz+=ans[(k-i)%k];
}
for (int i : rem) ans[i]++;
}
for (int i : change) ans[i]=0;
vector<pair<int,int>> nxt;
for (auto [to,c] : g[res]) {
int val=sz[to];
if (2*val>tsize) {
val=tsize-sz[res];
}
nxt.push_back({to, val});
}
for (auto [i,j] : nxt) solve(i,j);
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>k;
g.resize(n+1);
sz.resize(n+1);
iscent.resize(n+1,false);
ans.resize(k,0);
for (int i=0;i<n-1;i++){
int a,b,t;
cin>>a>>b>>t;
g[a].push_back({b,t});
g[b].push_back({a,t});
}
solve(1, n);
cout<<valasz<<"\n";
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 508 KiB | ||||
| subtask2 | 15/15 | ||||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 316 KiB | ||||
| 5 | Elfogadva | 2ms | 316 KiB | ||||
| 6 | Elfogadva | 2ms | 316 KiB | ||||
| 7 | Elfogadva | 2ms | 316 KiB | ||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 2ms | 316 KiB | ||||
| subtask3 | 15/15 | ||||||
| 10 | Elfogadva | 20ms | 1332 KiB | ||||
| 11 | Elfogadva | 4ms | 1012 KiB | ||||
| 12 | Elfogadva | 90ms | 4020 KiB | ||||
| 13 | Elfogadva | 81ms | 3704 KiB | ||||
| 14 | Elfogadva | 93ms | 4144 KiB | ||||
| subtask4 | 20/20 | ||||||
| 15 | Elfogadva | 1ms | 580 KiB | ||||
| 16 | Elfogadva | 2ms | 564 KiB | ||||
| 17 | Elfogadva | 8ms | 1332 KiB | ||||
| 18 | Elfogadva | 32ms | 3848 KiB | ||||
| 19 | Elfogadva | 45ms | 5088 KiB | ||||
| 20 | Elfogadva | 63ms | 6956 KiB | ||||
| 21 | Elfogadva | 59ms | 6520 KiB | ||||
| 22 | Elfogadva | 72ms | 7856 KiB | ||||
| subtask5 | 50/50 | ||||||
| 23 | Elfogadva | 82ms | 3756 KiB | ||||
| 24 | Elfogadva | 43ms | 2356 KiB | ||||
| 25 | Elfogadva | 59ms | 2868 KiB | ||||
| 26 | Elfogadva | 12ms | 1080 KiB | ||||
| 27 | Elfogadva | 41ms | 2100 KiB | ||||
| 28 | Elfogadva | 90ms | 3956 KiB | ||||
| 29 | Elfogadva | 83ms | 3772 KiB | ||||
| 30 | Elfogadva | 85ms | 3920 KiB | ||||
| 31 | Elfogadva | 93ms | 4088 KiB | ||||