ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#213632 | #573. t2 | shiruiheng | 60 | 5149ms | 12108kb | C++11 | 2.1kb | 2024-11-12 22:08:51 | 2024-11-12 23:59:14 |
answer
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
//using LL = __int128
#define pi pair<ll, ll>
#define fi first
#define se second
//#define fi(x) (x->first)
//#define se(x) (x->second)
#define N 111111
ll sum[N], sz[N], nxt[N], d[N], fa[N], cnt[N], ans[N], n, q, u, v, w, mx;
vector<pi> g[N];
void add(int u, int v, int w, bool bj = 1){
g[u].push_back({v, w});
if(bj)
add(v, u, w, 0);
}
void dfs(int u, int f){
sz[u] = 1;
for(auto x : g[u]){
ll v = x.fi;
if(v == f)
continue;
dfs(v, u);
sz[u] += sz[v];
}
for(auto x : g[u])
cnt[x.se] += sz[u] * (n - sz[u]);
}
void init(){
for(int i = 1 ; i <= n ; i++)
fa[i] = i, cnt[i] = 1;
}
ll find(int u){
return fa[u] == u ? u : fa[u] = find(fa[u]);
}
void merge(int x, int y){
int fx = find(x), fy = find(y);
if(fx == fy)
return;
if(cnt[fx] < cnt[fy])
swap(fx, fy);
fa[fy] = fx;
cnt[fx] += cnt[fy];
}
void print(){
for(int i = 1 ; i <= q ; i++)
printf("%lld\n", ans[i]);
}
int main(){
scanf("%lld%lld", &n, &q);
for(int i = 1 ; i < n ; i++){
scanf("%lld%lld%lld", &u, &v, &w);
add(u, v, w);
mx = max(mx, w);
}
//dfs(1, 1);
for(int i = 1 ; i <= q ; i++)
scanf("%lld", &d[i]);
if((q <= 50) && (n <= 50)){
for(int i = 1 ; i <= q ; i++){
init();
for(int u = 1 ; u <= n ; u++)
for(auto x : g[u]){
int v = x.fi, w = x.se;
if(w % d[i] == 0)
merge(u, v);
}
for(int u = 1 ; u <= n ; u++)
if(find(u) == u)
ans[i] += cnt[u] * (cnt[u] - 1) / 2;
}
print();
return 0;
}
if((max(*max_element(d + 1, d + 1 + n), mx) <= 100)){
for(int i = 1 ; i <= q ; i++){
if(sz[d[i]]){
ans[i] = sz[d[i]];
continue;
}
init();
for(int u = 1 ; u <= n ; u++)
for(auto x : g[u]){
int v = x.fi, w = x.se;
if(w % d[i] == 0)
merge(u, v);
}
for(int u = 1 ; u <= n ; u++)
if(find(u) == u)
ans[i] += cnt[u] * (cnt[u] - 1) / 2;
sz[d[i]] = ans[i];
}
print();
;
return 0;
}
return 0;
}
/*
freopen(".in", "r", stdin);
freopen(".out", "w", stdout);
*/
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 30
Accepted
Test #1:
score: 30
Accepted
time: 0ms
memory: 3844kb
input:
50 50 48 29 49788 47 48 31142 35 48 28665 10 35 23889 39 35 6411 50 39 66666 43 35 27629 46 10 49173...
output:
2 1 0 0 0 2 0 0 0 0 0 0 1 10 0 0 1 0 0 2 0 1 0 2 0 0 0 0 0 2 0 0 0 0 2 0 0 0 1 0 0 1 0 2 1 2 0 0 0 0
result:
ok 50 tokens
Test #2:
score: 0
Accepted
time: 0ms
memory: 3844kb
input:
50 50 48 29 36145 47 29 82496 35 47 66171 10 47 40597 39 48 64355 50 48 98687 43 39 15472 46 35 3729...
output:
0 0 0 4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 1 0 13 0 0 1 0 1 1 0 20 1 1 0 6 0 0 1
result:
ok 50 tokens
Test #3:
score: 0
Accepted
time: 0ms
memory: 3848kb
input:
50 50 48 29 38855 47 29 33850 35 29 87324 10 29 73658 39 48 22299 50 47 14355 43 29 86962 46 47 4177...
output:
0 0 1 0 9 0 0 1 0 0 0 0 0 2 0 0 0 0 1 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 58 0 0 0 0 0 3 0 0 0 0
result:
ok 50 tokens
Test #4:
score: 0
Accepted
time: 3ms
memory: 3848kb
input:
50 50 48 29 25212 47 48 68851 35 48 24830 10 47 90366 39 10 96596 50 10 30023 43 47 58452 46 29 2989...
output:
0 6 0 1 7 4 0 3 1 0 7 0 1 0 0 0 0 4 0 6 0 7 0 0 0 4 2 3 0 0 0 6 0 0 0 0 0 4 6 3 1 3 0 0 4 0 0 0 1 6
result:
ok 50 tokens
Test #5:
score: 0
Accepted
time: 0ms
memory: 3848kb
input:
50 50 48 29 27922 47 29 20205 35 29 45983 10 48 7074 39 10 54540 50 29 62044 43 10 29942 46 43 34375...
output:
0 0 0 0 14 0 0 0 2 0 0 2 1 0 0 0 0 0 0 3 0 0 0 2 0 1 1 0 0 18 0 0 0 0 0 0 3 1 1 0 1 0 0 0 2 0 0 25 1...
result:
ok 50 tokens
Test #6:
score: 0
Accepted
time: 3ms
memory: 3848kb
input:
50 50 48 29 14279 47 48 71559 35 48 83489 10 35 23782 39 47 12484 50 47 77712 43 50 1432 46 50 22499...
output:
0 0 1 3 24 0 0 0 1 2 0 10 2 0 0 0 1 0 0 0 0 0 10 0 0 0 0 0 0 1 0 0 1 0 1 2 0 0 0 0 0 0 0 93 0 0 0 0 ...
result:
ok 50 tokens
Test #7:
score: 0
Accepted
time: 0ms
memory: 3852kb
input:
50 50 48 29 636 47 29 22913 35 47 4642 10 47 40490 39 29 70428 50 10 9733 43 48 72922 46 10 26976 14...
output:
2 0 0 0 3 0 0 7 0 1 1 0 99 0 0 0 0 0 0 0 0 0 0 0 0 99 0 2 2 0 6 3 0 0 2 0 0 3 4 0 0 3 0 0 1 0 1 1 2 0
result:
ok 50 tokens
Test #8:
score: 0
Accepted
time: 0ms
memory: 3844kb
input:
50 50 48 29 3346 47 48 57914 35 29 42148 10 29 73551 39 29 44725 50 39 25401 43 35 60765 46 35 15100...
output:
0 1225 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 0 0 0 0 0 0 3 0 0 2 0 0 1 0 0 0 0 0 2 0 0 0 0 4 0 1 0 0 0 2
result:
ok 50 tokens
Test #9:
score: 0
Accepted
time: 0ms
memory: 3848kb
input:
50 50 48 29 89703 47 29 9268 35 47 63301 10 35 90259 39 35 2669 50 48 41069 43 39 32255 46 47 19577 ...
output:
0 0 0 2 0 0 0 0 0 1 0 5 1 0 0 1 0 2 0 1 2 0 5 0 6 0 3 4 0 0 0 0 3 0 0 0 5 2 0 3 0 0 1 0 0 0 0 0 0 0
result:
ok 50 tokens
Test #10:
score: 0
Accepted
time: 0ms
memory: 3844kb
input:
50 50 48 29 92413 47 48 60622 35 29 807 10 48 6967 39 35 60613 50 35 73090 43 29 3745 46 29 7701 14 ...
output:
0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 2 1 2 0 0 4 0 0 0 0 0 0 0 2 0 0 0 0 7 0 1 0 0 0 0 0 0 0 6 0 2 0 0 0
result:
ok 50 tokens
Subtask #2:
score: 30
Accepted
Test #11:
score: 30
Accepted
time: 696ms
memory: 12108kb
input:
100000 100000 73595 40695 76 13615 40695 96 65545 13615 84 19391 13615 76 2353 73595 27 26730 40695 ...
output:
12815 1065 2028 53298 627586 19060 4345 1010 16097 1032 1044 1054 3191 16097 1055 627586 19060 978 9...
result:
ok 100000 tokens
Test #12:
score: 0
Accepted
time: 492ms
memory: 12100kb
input:
100000 100000 73595 40695 70 13615 73595 52 65545 73595 51 19391 73595 72 2353 19391 18 26730 13615 ...
output:
975 1028 15852 1040 15852 5571 23908 49914 1010 15852 646494 12387 4999950000 20056 2104 4999950000 ...
result:
ok 100000 tokens
Test #13:
score: 0
Accepted
time: 496ms
memory: 12092kb
input:
100000 100000 73595 40695 64 13615 40695 61 65545 13615 71 19391 65545 15 2353 19391 9 26730 19391 4...
output:
1041 2062 14285 23281 49485 12419 996 1018 1011 19672 19672 1036 23281 3195 4999950000 12419 1018 20...
result:
ok 100000 tokens
Test #14:
score: 0
Accepted
time: 476ms
memory: 12096kb
input:
100000 100000 73595 40695 58 13615 73595 70 65545 40695 38 19391 13615 58 2353 13615 47 26730 40695 ...
output:
23392 993 1036 13972 5412 1022 19503 3237 48221 23392 981 958486 1004 980 23392 993 48221 1020 980 1...
result:
ok 100000 tokens
Test #15:
score: 0
Accepted
time: 480ms
memory: 12096kb
input:
100000 100000 73595 40695 52 13615 40695 26 65545 73595 58 19391 40695 1 2353 13615 38 26730 13615 9...
output:
1021 48268 4999950000 998 2011 94940 1049 19311 19311 33716 48268 15508 2124 1040 985 15508 8140 482...
result:
ok 100000 tokens
Test #16:
score: 0
Accepted
time: 498ms
memory: 12096kb
input:
100000 100000 73595 40695 46 13615 73595 35 65545 40695 25 19391 13615 97 2353 40695 76 26730 65545 ...
output:
12645 997 1042 4999950000 1060 23020 4222 974 5631 19302 2078 1030 48335 2033 1002 1986 1018 6806 19...
result:
ok 100000 tokens
Test #17:
score: 0
Accepted
time: 486ms
memory: 12096kb
input:
100000 100000 73595 40695 40 13615 40695 91 65545 73595 45 19391 73595 40 2353 40695 67 26730 2353 4...
output:
9577 5383 23807 997 941 1013 19428 1003 95552 1024 49914 12451 2082 1109 49914 95552 49914 499995000...
result:
ok 100000 tokens
Test #18:
score: 0
Accepted
time: 492ms
memory: 12096kb
input:
100000 100000 73595 40695 34 13615 40695 100 65545 13615 12 19391 65545 83 2353 65545 58 26730 73595...
output:
4999950000 4416 2028 94412 4999950000 14337 1002 12327 23226 1038 6629 998 5505 1059 14337 2064 1042...
result:
ok 100000 tokens
Test #19:
score: 0
Accepted
time: 492ms
memory: 12096kb
input:
100000 100000 73595 40695 28 13615 73595 56 65545 40695 79 19391 13615 26 2353 65545 96 26730 65545 ...
output:
1031 93090 15639 3190 19477 1041 32364 12280 14143 47814 3110 416410 32364 22889 19477 4999950000 49...
result:
ok 100000 tokens
Test #20:
score: 0
Accepted
time: 495ms
memory: 12088kb
input:
100000 100000 73595 40695 22 13615 40695 65 65545 13615 99 19391 40695 22 2353 73595 87 26730 19391 ...
output:
33139 4999950000 3015 33139 91207 2093 944 1051 1006 1009 91207 15171 5538 33139 1031 2021 1018 9120...
result:
ok 100000 tokens
Subtask #3:
score: 0
Wrong Answer
Test #21:
score: 0
Wrong Answer
time: 40ms
memory: 9716kb
input:
100000 100000 73595 40695 12816 13615 73595 81821 65545 40695 75866 19391 65545 1165 2353 73595 3737...
output:
result:
wrong answer Unexpected EOF in the participants output