博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 2114 树的分治 可作模板
阅读量:5286 次
发布时间:2019-06-14

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

/*啊啊啊啊啊啊啊本题证明一个问题,在实际应用中sort比qsort块还有memset这类初始化能不加尽量别加,很浪费时间原来的程序把qsort该成sort,去掉一个无用memset就a了时间不到一半题意:和poj1741差不多,不过本题求的是dis[i]+dis[j]==dis[k];*/#include
#include
#include
#include
using namespace std;#define N 11000#define inf 0x3fffffffstruct node {int u,v,w,next;}bian[N*4];int yong,head[N];void init() { yong=0; memset(head,-1,sizeof(head));}void addedge(int u,int v,int w) {bian[yong].u=u;bian[yong].v=v;bian[yong].w=w;bian[yong].next=head[u];head[u]=yong++;}int minn,ma,vis[N],diss[N],len,num[N],nn;void dfs1(int u,int fa) { int i; nn++; for(i=head[u];i!=-1;i=bian[i].next) { int v=bian[i].v; if(v!=fa&&!vis[v]) dfs1(v,u); } return ;}int Max(int v,int vv) {return v>vv?v:vv;}void dfs2(int u,int fa) { num[u]=1; int i,tit=0; for(i=head[u];i!=-1;i=bian[i].next) { int v=bian[i].v; if(v!=fa&&!vis[v]) { dfs2(v,u); num[u]+=num[v]; tit=Max(tit,num[v]); } } tit=Max(tit,nn-num[u]); if(tit
m) j--; k=j; while(i
m) j--; else { if(diss[i]==diss[j]) { ans+=(j-i+1)*(j-i)/2; break; } ki=i;kj=j; while(diss[i]==diss[ki])ki++; while(diss[j]==diss[kj])kj--; ans+=(ki-i)*(j-kj); i=ki;j=kj; } } */ return ans;}int dfs(int u) { minn=inf; nn=0; dfs1(u,-1); dfs2(u,-1); int ans=dfs3(ma,-1,0); // printf("%d\n",ma); vis[ma]=1; int i; for(i=head[ma];i!=-1;i=bian[i].next) { int v=bian[i].v; if(!vis[v]) { ans-=dfs3(v,-1,bian[i].w); ans+=dfs(v); } } return ans;}int main() { int n,i,j,k; while(scanf("%d",&n),n) { init(); for(i=1;i<=n;i++) { while(scanf("%d",&j),j) { scanf("%d",&k); addedge(i,j,k); addedge(j,i,k); } } while(scanf("%d",&m),m) { memset(vis,0,sizeof(vis)); k=dfs(1); if(k) printf("AYE\n"); else printf("NAY\n"); } printf(".\n"); }return 0;}

转载于:https://www.cnblogs.com/thefirstfeeling/p/4410598.html

你可能感兴趣的文章
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
Linux编程简介——gcc
查看>>
2019年春季学期第四周作业
查看>>
CF461B Appleman and Tree
查看>>
CF1215E Marbles
查看>>
axure学习点
查看>>
WPF文本框只允许输入数字[转]
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
第一个项目--用bootstrap实现美工设计的首页
查看>>
TYVJ.1864.[Poetize I]守卫者的挑战(概率DP)
查看>>
0925 韩顺平java视频
查看>>