辣鸡蒟蒻怎么今天才来敲这个模板题

好像还敲了很久的样子

(大雾)

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 10005; vector<pair<int,int> > g[N];
int dis[N],siz[N],msiz[N],n,m,k[N],ans[N],u[N];
vector <int> st;
int buc[10000005];
vector <int> bl;
vector <int> wl; void buc_push(int x) {
if(x>1e+7) return;
buc[x]=1;
bl.push_back(x);
}
int buc_query(int x) {
if(x<0 || x>1e+7) return 0;
return buc[x];
}
void buc_clear() {
for(int i=0;i<bl.size();i++)
buc[bl[i]]=0;
bl.clear();
} void dfs1(int p,int from) {
siz[p]=1;
msiz[p]=0;
st.push_back(p);
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dfs1(q,p);
siz[p]+=siz[q];
msiz[p]=max(msiz[p],siz[q]);
}
}
} void dfs2(int p,int from) {
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dis[q]=dis[p]+w;
dfs2(q,p);
}
}
} void dfs3(int p,int from) {
for(int i=1;i<=m;i++) {
if(buc_query(k[i]-dis[p])) ans[i]=1;
}
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(q!=from && u[q]==0) {
dfs3(q,p);
}
}
wl.push_back(dis[p]);
} int findroot(int p) {
st.clear();
dfs1(p,0);
int r=0,rv=1e+9;
for(int i=0;i<st.size();i++) {
msiz[st[i]]=max(msiz[st[i]],siz[p]-siz[st[i]]);
if(msiz[st[i]]<rv) r=st[i],rv=msiz[st[i]];
}
return r;
} void calc(int p) {
dis[p]=0;
dfs2(p,0);
buc_clear();
buc_push(0);
for(int i=0;i<g[p].size();i++) {
int q=g[p][i].first, w=g[p][i].second;
if(u[q]==0) {
dfs3(q,0);
for(int j=0;j<wl.size();j++) {
buc_push(wl[j]);
}
wl.clear();
}
}
} void solve(int p) {
int r=findroot(p);
u[r]=1;
calc(r);
for(int i=0;i<g[r].size();i++) {
int q=g[r][i].first, w=g[r][i].second;
if(u[q]==0) {
solve(q);
}
}
} signed main() {
scanf("%lld%lld",&n,&m);
for(int i=1;i<n;i++) {
int t1,t2,t3;
scanf("%lld%lld%lld",&t1,&t2,&t3);
g[t1].push_back(make_pair(t2,t3));
g[t2].push_back(make_pair(t1,t3));
}
for(int i=1;i<=m;i++) scanf("%lld",&k[i]);
solve(1);
for(int i=1;i<=m;i++) {
cout<<(ans[i]?"AYE":"NAY")<<endl;
}
}

最新文章

  1. Oracle学习总结_day06_视图&amp;序列&amp;索引
  2. 设计模式之美:Dynamic Property(动态属性)
  3. 64位Windows下安装Redis教程
  4. Android ListView 图片异步加载和图片内存缓存
  5. SQL Server 内存数据库原理解析
  6. BZOJ 1061: [Noi2008]志愿者招募 费用流
  7. tachyon 编译
  8. 对MMU段式转换的理解
  9. SRM 404(1-250pt, 1-500pt)
  10. In-Cell、On-Cell和OGS全贴合屏幕技术区别
  11. oracle 数据库连接的四种方式
  12. 【HDU 2013 猴子吃桃子】 尾递归与迭代
  13. 手把手教你在openshift上搭建wordpress博客(二)
  14. javascript 中的console.log的作用
  15. 【SqlServer系列】子查询
  16. 基于以太坊开发的类似58同城的DApp开发与应用案例
  17. CSS3 之 童年的纸飞机
  18. MyCat配置运行
  19. [转] Mongoose初使用总结
  20. linux进程状态D

热门文章

  1. 第2章.数组和ArrayList
  2. yii 日志和事件
  3. PHP0002:PHP基础1
  4. Java自学-Lambda 方法引用
  5. 修改Ubuntu的apt-get源为国内镜像源的方法
  6. 剑指offer-面试题23-链表中环的入口节点-双指针
  7. UVA1601-双向广度优先搜索
  8. simmon effect : build the funcion of trail list
  9. urllib模块提供的urlretrieve()函数使用
  10. Cloud保存时提示消息是否保存,点是保存,点否不保存。