5301 | 2023-04-25 17:33:10 | gortomi | Testvérvárosok | cpp17 | Hibás válasz 0/100 | 1.575s | 11564 KiB |
#include <bits/stdc++.h>
using namespace std;
vector<vector<pair<int, int> > > g;
vector<int> d, s, act, to, dep;
long long ans = 0;
int k, c;
vector<bool> w;
void dfs(int n, int p)
{
s[n] = 1;
for(auto x : g[n])
{
int y = x.first;
if(y != p && !w[y])
{
dfs(y, n);
s[n] += s[y];
}
}
}
int fc(int n, int p)
{
for(auto x : g[n])
{
int y = x.first;
if(!w[y] && y != p)
{
if(s[y] > c / 2) return fc(y, n);
}
}
return n;
}
void add(int n, int p)
{
ans += dep[(k - d[n]) % k];
for(auto x : g[n])
{
int y = x.first;
if(!w[y] && y != p)
{
d[y] = (d[n] + x.second) % k;
add(y, n);
}
}
}
void solve(int n)
{
w[n] = 1;
c = s[n];
dfs(n, 0);
int u = fc(n, 0);
dep[0]++;
to.clear();
for(auto x : g[n])
{
int y = x.first;
if(!w[y])
{
act.clear();
d[y] = x.second % k;
add(y, n);
for(auto x : act)
{
dep[d[x]]++;
}
}
}
for(auto x : to) dep[d[x]]--;
dep[0]--;
for(auto x : g[n])
{
int y = x.first;
if(!w[y]) solve(y);
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n >> k;
g.resize(n + 1);
d.resize(n + 1);
w.resize(n + 1);
s.resize(n + 1);
dep.resize(k);
for(int i = 0; i < n - 1; i++)
{
int x, y, w;
cin >> x >> y >> w;
g[x].push_back({y, w});
g[y].push_back({x, w});
}
solve(1);
cout << ans;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 3ms | 1892 KiB | ||||
2 | Hibás válasz | 3ms | 2128 KiB | ||||
subtask2 | 0/15 | ||||||
3 | Hibás válasz | 3ms | 2336 KiB | ||||
4 | Elfogadva | 3ms | 2552 KiB | ||||
5 | Hibás válasz | 4ms | 2912 KiB | ||||
6 | Hibás válasz | 4ms | 3128 KiB | ||||
7 | Hibás válasz | 4ms | 3208 KiB | ||||
8 | Elfogadva | 3ms | 3156 KiB | ||||
9 | Hibás válasz | 6ms | 3512 KiB | ||||
subtask3 | 0/15 | ||||||
10 | Hibás válasz | 187ms | 5156 KiB | ||||
11 | Elfogadva | 301ms | 4384 KiB | ||||
12 | Hibás válasz | 1.133s | 10488 KiB | ||||
13 | Hibás válasz | 1.449s | 9832 KiB | ||||
14 | Hibás válasz | 1.32s | 10364 KiB | ||||
subtask4 | 0/20 | ||||||
15 | Elfogadva | 4ms | 4096 KiB | ||||
16 | Elfogadva | 29ms | 4176 KiB | ||||
17 | Elfogadva | 1.125s | 5764 KiB | ||||
18 | Időlimit túllépés | 1.575s | 6460 KiB | ||||
19 | Időlimit túllépés | 1.572s | 7884 KiB | ||||
20 | Időlimit túllépés | 1.557s | 9800 KiB | ||||
21 | Időlimit túllépés | 1.572s | 9552 KiB | ||||
22 | Időlimit túllépés | 1.569s | 10704 KiB | ||||
subtask5 | 0/50 | ||||||
23 | Időlimit túllépés | 1.569s | 6808 KiB | ||||
24 | Hibás válasz | 628ms | 7956 KiB | ||||
25 | Hibás válasz | 800ms | 9056 KiB | ||||
26 | Hibás válasz | 12ms | 5868 KiB | ||||
27 | Hibás válasz | 644ms | 7956 KiB | ||||
28 | Hibás válasz | 1.144s | 11200 KiB | ||||
29 | Hibás válasz | 949ms | 10944 KiB | ||||
30 | Hibás válasz | 1.228s | 10888 KiB | ||||
31 | Hibás válasz | 1.294s | 11564 KiB |