162792025-04-20 09:44:18HoraTestvérvárosokcpp17Wrong answer 15/1001.108s262144 KiB
#include <bits/stdc++.h>
using namespace std;

vector<vector<array<long long, 2>>> g;
long long n, k, ans = 0;
vector<vector<long long>> a;

void dfs(long long v, long long p){
    a[v][0] = 1;
    for(auto [x, w] : g[v]){
        if(x == p) continue;
        dfs(x, v);
        for(long long i = 0; i < k; i++){
            ans += a[x][(i + w) % k] * a[v][i];
        }
        for(long long i = 0; i < k; i++){
            a[v][(i + w) % k] += a[x][i];
        }
    }
}

int main() {
    cin >> n >> k;
    g.resize(n + 1);
    a.resize(n + 1, vector<long long>(k, 0));
    for(long long i = 0; i < n - 1; i++){
        long long b, c, d;
        cin >> b >> c >> d;
        g[b].push_back({c, d % k});
        g[c].push_back({b, d % k});
    }
    dfs(1, 0);
    cout << ans << "\n";
    /*for(auto x : a){
        for(auto y : x) cout << y << " ";
        cout << "\n";
    }*/
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Wrong answer1ms316 KiB
subtask20/15
3Accepted2ms564 KiB
4Accepted1ms316 KiB
5Wrong answer4ms1108 KiB
6Wrong answer23ms5520 KiB
7Accepted2ms316 KiB
8Wrong answer14ms3724 KiB
9Wrong answer4ms1332 KiB
subtask315/15
10Accepted17ms2100 KiB
11Accepted4ms820 KiB
12Accepted71ms6708 KiB
13Accepted63ms6196 KiB
14Accepted71ms6780 KiB
subtask40/20
15Wrong answer6ms1588 KiB
16Wrong answer35ms7996 KiB
17Wrong answer100ms23092 KiB
18Wrong answer398ms87604 KiB
19Wrong answer270ms60168 KiB
20Wrong answer245ms49972 KiB
21Accepted54ms8756 KiB
22Runtime error193ms262144 KiB
subtask50/50
23Wrong answer1.108s253248 KiB
24Wrong answer651ms149144 KiB
25Wrong answer689ms148168 KiB
26Wrong answer273ms60980 KiB
27Wrong answer465ms99892 KiB
28Wrong answer393ms80692 KiB
29Runtime error233ms262144 KiB
30Accepted71ms6452 KiB
31Runtime error238ms262144 KiB