5114 2023. 04. 17 22:52:27 nmarci Testvérvárosok cpp11 Futási hiba 30/100 648ms 522528 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 4ms 4368 KiB
2 Elfogadva 4ms 5776 KiB
subtask2 15/15
3 Elfogadva 4ms 6400 KiB
4 Elfogadva 4ms 5348 KiB
5 Elfogadva 7ms 12792 KiB
6 Elfogadva 16ms 15484 KiB
7 Elfogadva 7ms 12124 KiB
8 Elfogadva 9ms 11628 KiB
9 Elfogadva 8ms 16224 KiB
subtask3 15/15
10 Elfogadva 52ms 114336 KiB
11 Elfogadva 37ms 73892 KiB
12 Elfogadva 232ms 404256 KiB
13 Elfogadva 214ms 374348 KiB
14 Elfogadva 202ms 421696 KiB
subtask4 0/20
15 Elfogadva 9ms 18448 KiB
16 Elfogadva 27ms 39152 KiB
17 Elfogadva 105ms 199688 KiB
18 Futási hiba 231ms 522528 KiB
19 Futási hiba 193ms 522492 KiB
20 Futási hiba 250ms 522472 KiB
21 Futási hiba 246ms 522444 KiB
22 Futási hiba 259ms 522216 KiB
subtask5 0/50
23 Futási hiba 568ms 522156 KiB
24 Elfogadva 377ms 341600 KiB
25 Elfogadva 382ms 431964 KiB
26 Elfogadva 128ms 116476 KiB
27 Elfogadva 307ms 335996 KiB
28 Elfogadva 379ms 499668 KiB
29 Futási hiba 648ms 521956 KiB
30 Elfogadva 222ms 385276 KiB
31 Futási hiba 531ms 521444 KiB