ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#213546 | #2770. 子序列 | ThySecret | 0 | 0ms | 0kb | C++11 | 2.7kb | 2024-11-12 20:33:29 | 2024-11-12 23:32:13 |
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;
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 0
Time Limit Exceeded
input:
10 20 7 5 5 1 7 13 19 10 2 7 10 10 10 6 7 6 8 4 10 8 9 5 8 6 10 5 5 2 6 6 8
output:
result:
Test #2:
score: 0
Time Limit Exceeded
input:
10 20 15 0 15 10 6 18 1 13 3 1 10 1 2 4 9 3 7 4 8 6 10 2 3 1 4 2 5 2 9 5 9
output:
result:
Test #3:
score: 0
Time Limit Exceeded
input:
10 20 8 9 17 13 10 13 16 11 19 3 10 6 9 3 9 2 6 1 10 5 10 6 10 4 5 2 4 10 10 3 5
output:
result:
Test #4:
score: 0
Time Limit Exceeded
input:
10 20 12 8 11 1 0 3 2 3 19 17 10 5 7 1 3 1 10 2 6 4 10 5 9 5 9 3 10 4 8 4 8
output:
result:
Test #5:
score: 0
Time Limit Exceeded
input:
10 20 7 0 2 2 8 12 10 7 1 2 10 9 9 6 9 3 7 3 8 1 6 2 4 6 8 4 5 1 6 8 9
output:
result:
Test #6:
score: 0
Time Limit Exceeded
input:
100 20 3 15 11 17 7 9 16 11 6 0 1 1 19 15 18 0 14 12 17 9 19 12 18 9 4 14 11 5 18 10 4 18 14 8 14 8 ...
output:
result:
Test #7:
score: 0
Time Limit Exceeded
input:
100 20 3 7 17 4 9 6 6 15 18 1 3 5 19 13 2 7 9 10 4 5 0 10 18 18 6 0 1 15 16 12 2 7 6 0 17 2 14 18 4 ...
output:
result:
Test #8:
score: 0
Time Limit Exceeded
input:
100 20 1 11 5 10 8 2 11 14 2 11 7 4 13 4 2 1 13 4 0 13 4 8 3 12 12 17 12 13 16 2 5 12 13 0 5 11 0 7 ...
output:
result:
Test #9:
score: 0
Time Limit Exceeded
input:
100 20 8 18 4 8 11 9 1 19 7 14 7 13 4 3 14 0 10 3 13 16 2 5 17 18 7 10 7 3 19 1 16 18 7 13 19 13 2 1...
output:
result:
Test #10:
score: 0
Time Limit Exceeded
input:
100 20 17 1 13 11 0 8 12 2 4 15 14 18 6 6 5 16 18 4 6 19 4 0 4 6 10 19 5 4 18 17 14 16 3 0 1 6 2 4 0...
output:
result:
Test #11:
score: 0
Time Limit Exceeded
input:
1000 20 7 14 19 15 16 8 19 15 5 5 6 3 4 16 0 1 7 6 14 3 12 2 4 5 16 12 12 8 1 9 6 13 4 10 12 16 11 7...
output:
result:
Test #12:
score: 0
Time Limit Exceeded
input:
1000 20 16 7 12 15 13 10 8 1 14 16 13 6 16 7 4 11 0 17 6 3 4 8 17 10 3 11 18 13 17 19 15 4 7 17 12 4...
output:
result:
Test #13:
score: 0
Time Limit Exceeded
input:
1000 20 7 7 16 0 12 6 11 3 7 16 12 11 1 7 17 0 11 8 14 17 8 17 7 18 1 11 14 0 6 5 10 0 12 15 1 4 5 1...
output:
result:
Test #14:
score: 0
Time Limit Exceeded
input:
1000 20 19 3 14 11 9 17 18 4 11 5 0 18 2 11 13 12 8 10 15 19 12 9 2 15 5 19 14 17 17 7 18 5 2 8 5 0 ...
output:
result:
Test #15:
score: 0
Time Limit Exceeded
input:
1000 20 16 19 4 2 2 19 19 5 11 4 16 7 17 6 11 11 7 10 6 3 15 1 11 12 5 11 12 13 3 10 12 2 19 9 4 8 6...
output:
result:
Test #16:
score: 0
Time Limit Exceeded
input:
10000 20 12 8 12 19 9 19 1 10 19 11 12 10 19 5 0 16 17 1 9 18 18 13 6 0 14 16 6 6 3 6 17 2 13 19 13 ...
output:
result:
Test #17:
score: 0
Time Limit Exceeded
input:
10000 20 8 15 6 17 5 13 11 1 7 9 16 16 15 12 4 19 18 2 3 10 13 15 12 5 3 6 15 2 0 11 8 19 13 18 12 1...
output:
result:
Test #18:
score: 0
Time Limit Exceeded
input:
10000 20 0 9 6 6 17 19 11 13 18 14 0 10 3 0 0 11 12 11 2 19 18 12 13 16 8 7 14 12 10 2 7 3 4 18 10 1...
output:
result:
Test #19:
score: 0
Time Limit Exceeded
input:
10000 20 5 13 8 2 2 13 16 17 9 8 15 10 1 12 2 18 19 1 0 17 9 7 16 14 0 9 19 14 13 3 19 17 5 3 19 17 ...
output:
result:
Test #20:
score: 0
Time Limit Exceeded
input:
10000 20 5 8 19 15 4 8 12 14 4 5 16 13 17 9 3 3 15 4 15 19 17 8 14 16 16 13 19 18 19 7 13 5 11 11 12...
output:
result:
Test #21:
score: 0
Runtime Error
input:
200000 20 11 5 3 3 2 9 10 10 15 4 19 1 3 0 19 19 15 0 0 12 14 16 1 8 3 18 10 6 14 11 2 7 17 2 0 1 12...
output:
result:
Test #22:
score: 0
Runtime Error
input:
200000 20 13 15 5 3 2 0 3 4 6 16 14 0 4 11 8 10 18 5 3 12 1 7 2 16 13 19 16 16 3 16 6 8 2 6 10 0 13 ...
output:
result:
Test #23:
score: 0
Runtime Error
input:
200000 20 15 8 8 12 19 10 4 14 16 6 3 17 13 4 14 17 5 15 19 4 0 3 17 5 4 9 14 19 10 11 9 13 0 3 18 0...
output:
result:
Test #24:
score: 0
Runtime Error
input:
200000 20 11 4 7 18 16 15 15 18 11 2 4 1 17 18 6 9 19 12 2 14 8 6 10 4 15 16 17 13 18 1 15 18 15 9 1...
output:
result:
Test #25:
score: 0
Runtime Error
input:
200000 20 5 3 18 11 17 13 14 19 0 0 1 3 4 13 8 1 15 7 15 2 12 8 3 15 8 1 4 8 7 5 9 16 9 16 0 14 2 16...