162752025-04-20 09:25:17HoraTestvérvárosokcpp17Hibás válasz 0/100609ms174764 KiB
#include <bits/stdc++.h>
using namespace std;

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

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

int main() {
    cin >> n >> k;
    g.resize(n + 1);
    a.resize(n + 1, vector<int>(k));
    for(int i = 0; i < n - 1; i++){
        int b, c, d;
        cin >> b >> c >> d;
        g[b].push_back({c, d});
        g[c].push_back({b, d});
    }
    dfs(1, 0);
    cout << ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Hibás válasz1ms508 KiB
subtask20/15
3Hibás válasz2ms564 KiB
4Hibás válasz1ms316 KiB
5Hibás válasz3ms780 KiB
6Hibás válasz9ms2868 KiB
7Elfogadva2ms316 KiB
8Hibás válasz6ms1940 KiB
9Hibás válasz3ms912 KiB
subtask30/15
10Hibás válasz17ms2012 KiB
11Elfogadva4ms820 KiB
12Hibás válasz68ms6452 KiB
13Elfogadva59ms6128 KiB
14Hibás válasz68ms6768 KiB
subtask40/20
15Hibás válasz3ms820 KiB
16Hibás válasz13ms4148 KiB
17Hibás válasz41ms12340 KiB
18Hibás válasz164ms45876 KiB
19Hibás válasz123ms33128 KiB
20Hibás válasz128ms28984 KiB
21Elfogadva52ms8664 KiB
22Hibás válasz556ms174764 KiB
subtask50/50
23Hibás válasz444ms129332 KiB
24Hibás válasz256ms75828 KiB
25Hibás válasz291ms76084 KiB
26Hibás válasz108ms31028 KiB
27Hibás válasz199ms51512 KiB
28Hibás válasz189ms43572 KiB
29Hibás válasz609ms172340 KiB
30Elfogadva68ms6196 KiB
31Hibás válasz509ms150836 KiB