5115 2023. 04. 17 22:54:57 nmarci Testvérvárosok cpp11 Elfogadva 100/100 629ms 419940 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];
int dp[50010][1010] = { 0 };
int sol = 0;        //lehet overflow
int mock[1010];
void dfs(int node, int prev = -1) {
    dp[node][0] = 1;
    for (auto i : g[node]) {
        if (i.first != prev) {
            dfs(i.first, node);
            //int mock[1010] = { 0 };
            for(int i = 0; i < 1010; ++i)
            	mock[i] = 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 4356 KiB
2 Elfogadva 4ms 5312 KiB
subtask2 15/15
3 Elfogadva 4ms 5380 KiB
4 Elfogadva 3ms 4780 KiB
5 Elfogadva 7ms 10632 KiB
6 Elfogadva 13ms 10608 KiB
7 Elfogadva 6ms 10840 KiB
8 Elfogadva 8ms 8964 KiB
9 Elfogadva 8ms 13916 KiB
subtask3 15/15
10 Elfogadva 56ms 107864 KiB
11 Elfogadva 14ms 29144 KiB
12 Elfogadva 174ms 391388 KiB
13 Elfogadva 194ms 360248 KiB
14 Elfogadva 222ms 407432 KiB
subtask4 20/20
15 Elfogadva 6ms 11360 KiB
16 Elfogadva 16ms 16908 KiB
17 Elfogadva 50ms 59280 KiB
18 Elfogadva 181ms 195204 KiB
19 Elfogadva 180ms 274440 KiB
20 Elfogadva 209ms 375392 KiB
21 Elfogadva 180ms 347788 KiB
22 Elfogadva 570ms 419940 KiB
subtask5 50/50
23 Elfogadva 517ms 368716 KiB
24 Elfogadva 298ms 213244 KiB
25 Elfogadva 300ms 269012 KiB
26 Elfogadva 108ms 85064 KiB
27 Elfogadva 232ms 209420 KiB
28 Elfogadva 310ms 397148 KiB
29 Elfogadva 629ms 375376 KiB
30 Elfogadva 207ms 376964 KiB
31 Elfogadva 554ms 411176 KiB