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 |