9194 2024. 02. 17 21:59:27 CWM Testvérvárosok cpp17 Hibás válasz 35/100 59ms 20648 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main()
{
	int n, k;
	cin >> n >> k;
	vector<vector<pair<int,int>>> g(n);
	vector<int> modDist(n);
	vector<bool> visited(n);
	for (size_t i = 0; i < n-1; i++)
	{
		int a, b, w;
		cin >> a >> b >> w;
		a--; b--;
		g[a].push_back({ b,w });
		g[b].push_back({ a,w });
	}
	visited[0] = true;
	queue<int> BFS;
	BFS.push(0);
	while (!BFS.empty())
	{
		int node = BFS.front();
		BFS.pop();
		for (size_t i = 0; i < g[node].size(); i++)
		{
			if (!visited[g[node][i].first]) {
				visited[g[node][i].first] = true;
				modDist[g[node][i].first] = (modDist[node] + g[node][i].second)%k;
				BFS.push(g[node][i].first);
			}
		}
	}
	vector<int> kBuckets(k);
	for (size_t i = 0; i < n; i++)
	{
		kBuckets[modDist[i]]++;
	}
	long long res = 0;
	for (size_t i = 0; i < kBuckets.size(); i++)
	{
		int cnt = kBuckets[i];
		res += (cnt * (cnt - 1) / 2);
	}
	cout << res;
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1812 KiB
2 Hibás válasz 3ms 2068 KiB
subtask2 0/15
3 Hibás válasz 3ms 2276 KiB
4 Elfogadva 3ms 2360 KiB
5 Hibás válasz 3ms 2784 KiB
6 Hibás válasz 3ms 3108 KiB
7 Elfogadva 3ms 3324 KiB
8 Hibás válasz 3ms 3352 KiB
9 Hibás válasz 4ms 3700 KiB
subtask3 15/15
10 Elfogadva 16ms 5020 KiB
11 Elfogadva 4ms 4148 KiB
12 Elfogadva 57ms 10864 KiB
13 Elfogadva 52ms 10880 KiB
14 Elfogadva 59ms 12488 KiB
subtask4 20/20
15 Elfogadva 3ms 6212 KiB
16 Elfogadva 3ms 6252 KiB
17 Elfogadva 8ms 7164 KiB
18 Elfogadva 26ms 9292 KiB
19 Elfogadva 35ms 10848 KiB
20 Elfogadva 48ms 13020 KiB
21 Elfogadva 45ms 13244 KiB
22 Elfogadva 54ms 15116 KiB
subtask5 0/50
23 Hibás válasz 52ms 15716 KiB
24 Hibás válasz 30ms 13560 KiB
25 Hibás válasz 39ms 15100 KiB
26 Hibás válasz 12ms 12736 KiB
27 Hibás válasz 28ms 14544 KiB
28 Hibás válasz 57ms 18320 KiB
29 Hibás válasz 54ms 18548 KiB
30 Elfogadva 54ms 19236 KiB
31 Hibás válasz 59ms 20648 KiB