UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#213547#573. t2ThySecret706100ms31716kbC++112.7kb2024-11-12 20:33:382024-11-12 23:34:17

answer

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define x first
#define y second
#define File(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)

inline void debug() { cerr << '\n'; }
template<typename Type, typename... Other>
inline void debug(const Type& x, const Other&... y) { cerr << x << ' '; debug(y...); }
#define DEBUG(a...) cerr << "[" << #a << "] = ", debug(a);

typedef long long LL;
typedef pair<int, int> PII;

const int N = 100010;
const int INF = 0x3f3f3f3f;

template<typename Type>
inline void read(Type &res)
{
    res = 0;
    int ch = getchar(), flag = 0;
    while (!isdigit(ch)) flag |= ch == '-', ch = getchar();
    while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
    res = flag ? -res : res;
}
template<typename Type, typename... Other>
inline void read(Type &res, Other&... y) { read(res), read(y...); }

int n, q;
// int h[N], e[N << 1], ne[N << 1], w[N << 1], idx;
int sz[N], pre[N], stk[N], top;
vector<PII> g[N];
int ans[N], vis[N];

// inline void add(int a, int b, int c) { e[++ idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx; }

int rt(int x) { return pre[x] == x ? x : pre[x] = rt(pre[x]); }

inline void merge(int a, int b)
{
    int pa = rt(a), pb = rt(b);
    if (pa == pb) return;
    sz[pb] += sz[pa], pre[pa] = pb;
}

inline void divide(int x, int a, int b)
{
    g[1].emplace_back(a, b), g[x].emplace_back(a, b);
    for (int i = 2; i <= x / i; i ++)
        if (x % i == 0)
        {
            g[i].emplace_back(a, b);
            if (i != x / i) g[x / i].emplace_back(a, b);
        }
}

signed main()
{
    iota(pre, pre + N, 0);
    for (int i = 1; i < N; i ++) sz[i] = 1;
    // memset(h, -1, sizeof h), idx = -1;
    read(n, q);
    for (int i = 1; i < n; i ++)
    {
        int a, b, c; read(a, b, c);
        // add(a, b, c), add(b, a, c);
        divide(c, a, b);
    }

    for (int cur = 1; cur <= n; cur ++)
    {
        for (PII ver : g[cur])
        {
            int u = ver.x, v = ver.y;
            // stk[++ top] = u, stk[++ top] = v;
            if (vis[u] != cur) vis[u] = cur, stk[++ top] = u;
            if (vis[v] != cur) vis[v] = cur, stk[++ top] = v;
            merge(u, v);
        }
        for (int ver = 1; ver <= top; ver ++)
        {
            if (rt(stk[ver]) == stk[ver])
            {
                ans[cur] += (sz[stk[ver]] * (sz[stk[ver]] - 1)) / 2;
                sz[stk[ver]] = 1;
            }
        }
        while (top) pre[stk[top]] = stk[top], sz[stk[top]] = 1, top --;
    }

    while (q --)
    {
        int x; read(x);
        cout << ans[x] << '\n';
    }

    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 4ms
memory: 5128kb

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
0
0
0
0
2
0
0
0
0
0
0
1
10
0
0
1
0
0
2
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
2
1
2
0
0
0
0

result:

wrong answer 2nd words differ - expected: '1', found: '0'

Subtask #2:

score: 30
Accepted

Test #11:

score: 30
Accepted
time: 100ms
memory: 16140kb

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: 62ms
memory: 16032kb

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: 55ms
memory: 16008kb

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: 59ms
memory: 15788kb

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: 53ms
memory: 16044kb

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: 57ms
memory: 16048kb

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: 66ms
memory: 16064kb

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: 50ms
memory: 16008kb

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: 48ms
memory: 15780kb

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: 51ms
memory: 16116kb

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: 40
Accepted

Test #21:

score: 40
Accepted
time: 530ms
memory: 31656kb

input:

100000 100000
73595 40695 12816
13615 73595 81821
65545 40695 75866
19391 65545 1165
2353 73595 3737...

output:

8
2270
96901
1
2085
1584
4228
9112
6
0
2
0
11
1035
2833
0
4999950000
2
2
1294
6056
2221
4398
1587
49...

result:

ok 100000 tokens

Test #22:

score: 0
Accepted
time: 536ms
memory: 31604kb

input:

100000 100000
73595 40695 44510
13615 40695 64430
65545 73595 54386
19391 73595 2608
2353 19391 4081...

output:

5830
49192
1369
1384
6
1
9
1908
6158
104
4786
2590
4786
1205
1985
1268
3
9
6158
2
10
1433
1181
4544
...

result:

ok 100000 tokens

Test #23:

score: 0
Accepted
time: 522ms
memory: 31716kb

input:

100000 100000
73595 40695 76204
13615 73595 30686
65545 13615 16553
19391 40695 4051
2353 13615 6060...

output:

5
14002
1
3
21
16618
1046
2
2170
3188
4
2
1
1349
3
7
2
4346
1
6
3
3
1085
1
0
1
50389
552
4954
1936
1...

result:

ok 100000 tokens

Test #24:

score: 0
Accepted
time: 520ms
memory: 31600kb

input:

100000 100000
73595 40695 7898
13615 40695 13295
65545 73595 95073
19391 13615 5494
2353 13615 80398...

output:

6
1554
1510
10
2
2
2
1195
1
1972
0
3425
13
6473
0
1266
1515
4
0
17021
3
1
1628
2940
1515
1681
5551
1...

result:

ok 100000 tokens

Test #25:

score: 0
Accepted
time: 616ms
memory: 31588kb

input:

100000 100000
73595 40695 39592
13615 40695 79551
65545 13615 57240
19391 73595 23290
2353 40695 838...

output:

762017
4394
26
4394
3
3
7667
4186
0
4606
1619
3964
4999950000
0
2129
21
0
1619
1085
762017
1
4
1414
...

result:

ok 100000 tokens

Test #26:

score: 0
Accepted
time: 682ms
memory: 31552kb

input:

100000 100000
73595 40695 71286
13615 73595 62160
65545 40695 35760
19391 65545 24733
2353 40695 362...

output:

1
3594
11033
1
4200
5476
2
3
1030
2390
2
0
3893
1
1522
1258
1094
20754
5
0
1030
16814
1258
0
14
2
3
...

result:

ok 100000 tokens

Test #27:

score: 0
Accepted
time: 534ms
memory: 31664kb

input:

100000 100000
73595 40695 2980
13615 40695 28416
65545 73595 97927
19391 13615 26176
2353 65545 7065...

output:

4185
1154
5
54445
2083
0
1138
0
1322
1685
1134
5589
15
0
1
0
8
5
7
2905
1083
1313
2339
1935
0
3042
2...

result:

ok 100000 tokens

Test #28:

score: 0
Accepted
time: 517ms
memory: 31528kb

input:

100000 100000
73595 40695 34674
13615 73595 11025
65545 40695 60094
19391 40695 27619
2353 65545 268...

output:

0
5
24932
0
1298
8408
2
1037
1
1
0
3
3310
4
0
4062
1386
2441
3698
3410
1079
92899
1835
1639
7124
0
1...

result:

ok 100000 tokens

Test #29:

score: 0
Accepted
time: 510ms
memory: 31592kb

input:

100000 100000
73595 40695 98062
13615 73595 59890
65545 13615 781
19391 73595 46858
2353 73595 50085...

output:

1
0
2254
2
3
0
4
0
3853
5
3476
1901
41
4
1298
4600
0
5
0
5767
3
56
3959
1428
2
5
7339
2659
3959
3
68...

result:

ok 100000 tokens

Test #30:

score: 0
Accepted
time: 528ms
memory: 31436kb

input:

100000 100000
73595 40695 29756
13615 40695 26146
65545 40695 79301
19391 65545 48301
2353 19391 698...

output:

1393
0
5859
1549
7
1289
3848
1463
10016
1
2
3
12725
2139
3
5
2440
4295
11225
1762
0
1
2842
1
1289
5
...

result:

ok 100000 tokens