博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luoguP3806 【模板】点分治1
阅读量:5148 次
发布时间:2019-06-13

本文共 1139 字,大约阅读时间需要 3 分钟。

#include
#define setIO(s) freopen(s".in","r",stdin) #define maxn 10004 #define inf 10000003using namespace std;int edges,n,Q,sn,root,tl; bool is[inf]; int hd[maxn],to[maxn<<1],nex[maxn<<1],val[maxn<<1]; int answer[maxn], que[200], vis[maxn], f[maxn], siz[maxn], dep[maxn], mine[inf], dis1[maxn]; inline void add(int u,int v,int c){ nex[++edges]=hd[u],hd[u]=edges,to[edges]=v,val[edges]=c; } void Getroot(int u,int fa){ f[u]=0, siz[u]=1; for(int i=hd[u];i;i=nex[i]) { int v=to[i]; if(vis[v]||v==fa) continue; Getroot(v,u), siz[u]+=siz[v]; f[u]=max(f[u], siz[v]); } f[u]=max(f[u], sn-siz[u]); if(f[u]
=inf||que[o] < dis1[j]) continue; is[que[o]]|=mine[que[o]-dis1[j]]; } for(int j=pdl+1;j<=tl;++j) mine[dis1[j]]=1; } for(int i=1;i<=tl;++i) mine[dis1[i]]=0; }void solve(int u){ int i,v; vis[u]=1; calc(u); for(i=hd[u];i;i=nex[i]) { v=to[i]; if(vis[v]) continue; root=0,sn=siz[v],Getroot(v, u); solve(root); }}int main(){ int i,j; // setIO("input"); scanf("%d%d",&n,&Q); for(i=1;i

  

转载于:https://www.cnblogs.com/guangheli/p/11103235.html

你可能感兴趣的文章
IOS性能调优系列:使用Zombies动态分析内存中的僵尸对象
查看>>
Jenkins 部署 PHP 应用
查看>>
extjs发布
查看>>
python元编程详解
查看>>
使用css 设置高度等于宽度
查看>>
BZOJ1598: [Usaco2008 Mar]牛跑步
查看>>
python基础学习(一) 第一个python程序
查看>>
表格和分页组件封装
查看>>
Leetcode zigzag conversion
查看>>
字母统计
查看>>
在windows下用vagrant建立lnmp开发环境
查看>>
线段树(基础)
查看>>
torchvision的安装及使用
查看>>
使用UML进行项目开发
查看>>
Windows phone 8.1布局控件
查看>>
easyui中表格列之间的换位05
查看>>
SSL-ZYC 采购特价商品【SPFA】
查看>>
软工作业 2:时事点评-红芯浏览器事件
查看>>
网页里动态加载js
查看>>
2.微信开发原理
查看>>