51142023-04-17 22:52:27nmarciTestvérvárosokcpp11Futási hiba 30/100648ms522528 KiB
#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <deque>
#include <queue>
#include <algorithm>

using namespace std;
using ll = long long int;
int k;
vector<pair<int,int>> g[50010];
ll dp[50010][1010] = { 0 };
ll sol = 0;        //lehet overflow

void dfs(int node, int prev = -1) {
    dp[node][0] = 1;
    for (auto i : g[node]) {
        if (i.first != prev) {
            dfs(i.first, node);
            ll mock[1010] = { 0 };
            for (int j = 0; j < k; ++j) {
                int kellmeg = (k - ((j + i.second) % k)) % k;
                //cerr << ((j + i.second) % k) << " " << kellmeg << endl;
               // cerr << node << endl;
               // cerr << j << " " << i.second << " " << kellmeg << " " << dp[node][kellmeg] * dp[i.first][j] << endl;
                sol += dp[node][kellmeg] * dp[i.first][j];
                mock[(j + i.second) % k] += dp[i.first][j];
            }
            for (int j = 0; j < k; ++j) {
                dp[node][j] += mock[j];
            }
        }
    }
}

int main()
{
    int n;
    cin >> n >> k;
    for (int i = 0; i < n - 1; ++i) {
        int a, b, t;
        cin >> a >> b >> t;
        g[a].emplace_back(b, t);
        g[b].emplace_back(a, t);
    }
    //cerr << endl << endl;
    dfs(1);
    cout << sol << endl;
    /*for (int i = 1; i <= n; ++i) {
        for (int j = 0; j < k; ++j) {
            cerr << dp[i][j] << " ";
        }
        cerr << endl;
    }*/
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms4368 KiB
2Elfogadva4ms5776 KiB
subtask215/15
3Elfogadva4ms6400 KiB
4Elfogadva4ms5348 KiB
5Elfogadva7ms12792 KiB
6Elfogadva16ms15484 KiB
7Elfogadva7ms12124 KiB
8Elfogadva9ms11628 KiB
9Elfogadva8ms16224 KiB
subtask315/15
10Elfogadva52ms114336 KiB
11Elfogadva37ms73892 KiB
12Elfogadva232ms404256 KiB
13Elfogadva214ms374348 KiB
14Elfogadva202ms421696 KiB
subtask40/20
15Elfogadva9ms18448 KiB
16Elfogadva27ms39152 KiB
17Elfogadva105ms199688 KiB
18Futási hiba231ms522528 KiB
19Futási hiba193ms522492 KiB
20Futási hiba250ms522472 KiB
21Futási hiba246ms522444 KiB
22Futási hiba259ms522216 KiB
subtask50/50
23Futási hiba568ms522156 KiB
24Elfogadva377ms341600 KiB
25Elfogadva382ms431964 KiB
26Elfogadva128ms116476 KiB
27Elfogadva307ms335996 KiB
28Elfogadva379ms499668 KiB
29Futási hiba648ms521956 KiB
30Elfogadva222ms385276 KiB
31Futási hiba531ms521444 KiB