点分治模板
#include <bits/stdc++.h>
using namespace std;
int read() {
int s = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
f = (ch == '-' ? -1 : 1), ch = getchar();
while (ch >= '0' && ch <= '9')
s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar();
return s * f;
}
int n, m, k;
int head[10005], to[20005], nxt[20005], val[20005], tot = 0;
int ht, Maxp, d[10005], sz[10005];
bool f[10005];
void add(int u, int v, int w) {
to[++tot] = v, nxt[tot] = head[u], val[tot] = w, head[u] = tot;
}
bool v[10000005];
void H(int p, int fa, int SZ) {
int maxp = 0;
sz[p] = 1;
for (int i = head[p]; i; i = nxt[i])
if (to[i] != fa && !f[to[i]])
H(to[i], p, SZ), sz[p] += sz[to[i]], maxp = max(maxp, sz[to[i]]);
maxp = max(maxp, SZ - sz[p]);
if (maxp < Maxp)
Maxp = maxp, ht = p;
}
void getd(int p, int fa) {
for (int i = head[p]; i; i = nxt[i])
if (to[i] != fa && !f[to[i]])
d[to[i]] = d[p] + val[i], getd(to[i], p);
}
void mdf(int p, int fa, bool val) {
if (d[p] > k)
return ;
v[d[p]] = val;
for (int i = head[p]; i; i = nxt[i])
if (to[i] != fa && !f[to[i]])
mdf(to[i], p, val);
}
bool qry(int p, int fa) {
if (d[p] > k)
return false;
if (v[k - d[p]])
return true;
for (int i = head[p]; i; i = nxt[i])
if (to[i] != fa && !f[to[i]] && qry(to[i], p))
return true;
return false;
}
bool Solve(int rt) {
Maxp = 1e9, H(rt, 0, sz[rt]), rt = ht;
d[rt] = 0, v[0] = true, getd(rt, 0);
bool ans = false;
for (int i = head[rt]; i; i = nxt[i]) {
if (f[to[i]])
continue;
ans |= qry(to[i], rt), mdf(to[i], rt, true);
}
for (int i = head[rt]; i; i = nxt[i])
if (!f[to[i]])
mdf(to[i], rt, false);
if (ans)
return ans;
f[rt] = true;
for (int i = head[rt]; i; i = nxt[i])
if (!f[to[i]] && Solve(to[i]))
return true;
return false;
}
signed main() {
n = read(), m = read();
for (int i = 2; i <= n; i++) {
int u = read(), v = read(), w = read();
add(u, v, w), add(v, u, w);
}
while (m--) {
k = read();
memset(f, 0, sizeof f);
puts(Solve(1) ? "AYE" : "NAY");
}
return 0;
}
作者:Galex
出处:https://www.cnblogs.com/Galetx/p/17265191.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具