51132023-04-17 22:49:09nmarciTestvérvárosokcpp11Futási hiba 80/100639ms522848 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

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 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
1Elfogadva4ms4224 KiB
2Elfogadva4ms5292 KiB
subtask215/15
3Elfogadva4ms5484 KiB
4Elfogadva4ms4960 KiB
5Elfogadva7ms10976 KiB
6Elfogadva13ms11240 KiB
7Elfogadva6ms11024 KiB
8Elfogadva8ms8720 KiB
9Elfogadva8ms14032 KiB
subtask315/15
10Elfogadva57ms109840 KiB
11Elfogadva21ms50740 KiB
12Elfogadva218ms394384 KiB
13Elfogadva166ms363952 KiB
14Elfogadva190ms411152 KiB
subtask40/20
15Elfogadva7ms13236 KiB
16Elfogadva17ms23784 KiB
17Elfogadva68ms106836 KiB
18Elfogadva300ms373840 KiB
19Futási hiba239ms522848 KiB
20Futási hiba250ms522828 KiB
21Futási hiba202ms522796 KiB
22Futási hiba209ms522768 KiB
subtask550/50
23Elfogadva483ms368488 KiB
24Elfogadva305ms211960 KiB
25Elfogadva305ms267960 KiB
26Elfogadva115ms81260 KiB
27Elfogadva238ms209796 KiB
28Elfogadva317ms398328 KiB
29Elfogadva639ms376940 KiB
30Elfogadva208ms380032 KiB
31Elfogadva560ms415220 KiB