162782025-04-20 09:35:05HoraTestvérvárosokcpp17Futási hiba 30/1001.185s262144 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] * a[v][(4 * k - i - w) % k];
        }
        for(long long i = 0; i < k; i++){
            a[v][i] += a[x][(i - w + 4 * k) % k];
        }
    }
}

int main() {
    cin >> n >> k;
    g.resize(n + 1);
    a.resize(n + 1, vector<long long>(k));
    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";
    }*/
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask215/15
3Elfogadva3ms564 KiB
4Elfogadva1ms316 KiB
5Elfogadva4ms1072 KiB
6Elfogadva23ms5516 KiB
7Elfogadva2ms316 KiB
8Elfogadva16ms3688 KiB
9Elfogadva4ms1332 KiB
subtask315/15
10Elfogadva17ms2104 KiB
11Elfogadva4ms1104 KiB
12Elfogadva75ms6732 KiB
13Elfogadva67ms6068 KiB
14Elfogadva71ms6884 KiB
subtask40/20
15Elfogadva6ms1780 KiB
16Elfogadva34ms8092 KiB
17Elfogadva108ms23092 KiB
18Elfogadva405ms87604 KiB
19Elfogadva273ms60008 KiB
20Elfogadva234ms50064 KiB
21Elfogadva56ms8660 KiB
22Futási hiba232ms262144 KiB
subtask50/50
23Elfogadva1.185s253240 KiB
24Elfogadva661ms148852 KiB
25Elfogadva667ms148020 KiB
26Elfogadva280ms60984 KiB
27Elfogadva474ms99892 KiB
28Elfogadva404ms80692 KiB
29Futási hiba197ms262144 KiB
30Elfogadva64ms6456 KiB
31Futási hiba194ms262144 KiB