51152023-04-17 22:54:57nmarciTestvérvárosokcpp11Elfogadva 100/100629ms419940 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms4356 KiB
2Elfogadva4ms5312 KiB
subtask215/15
3Elfogadva4ms5380 KiB
4Elfogadva3ms4780 KiB
5Elfogadva7ms10632 KiB
6Elfogadva13ms10608 KiB
7Elfogadva6ms10840 KiB
8Elfogadva8ms8964 KiB
9Elfogadva8ms13916 KiB
subtask315/15
10Elfogadva56ms107864 KiB
11Elfogadva14ms29144 KiB
12Elfogadva174ms391388 KiB
13Elfogadva194ms360248 KiB
14Elfogadva222ms407432 KiB
subtask420/20
15Elfogadva6ms11360 KiB
16Elfogadva16ms16908 KiB
17Elfogadva50ms59280 KiB
18Elfogadva181ms195204 KiB
19Elfogadva180ms274440 KiB
20Elfogadva209ms375392 KiB
21Elfogadva180ms347788 KiB
22Elfogadva570ms419940 KiB
subtask550/50
23Elfogadva517ms368716 KiB
24Elfogadva298ms213244 KiB
25Elfogadva300ms269012 KiB
26Elfogadva108ms85064 KiB
27Elfogadva232ms209420 KiB
28Elfogadva310ms397148 KiB
29Elfogadva629ms375376 KiB
30Elfogadva207ms376964 KiB
31Elfogadva554ms411176 KiB