日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 【BZOJ2815】【ZJOI2012】災難 阿米巴和小強題 動態倍增LCA 災難樹

【BZOJ2815】【ZJOI2012】災難 阿米巴和小強題 動態倍增LCA 災難樹

來源:程序員人生   發布時間:2015-03-26 09:07:12 閱讀次數:3440次

廣告:

#include <stdio.h> int main() { puts("轉載請注明出處[vmurder]謝謝"); puts("網址:blog.csdn.net/vmurder/article/details/44104163"); }

題意:

原題面請見JSShining博客

http://www.cnblogs.com/JS-Shining/archive/2013/01/12/2857429.html

題解:

我們構建1顆災害樹,使得1個節點的任意1個先人滅絕,則其會滅絕。
則可以依照拓撲序掃每一個節點,然后加入到災害樹中時只需要把它的父親賦成它所有食品的LCA就行了。
我們可以動態處理每一個節點的倍增lca數組fi,j表示i的第(1<<j)高先人。

代碼:

#include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 70000 #define M 600000 #define LOGN 20 using namespace std; struct KSD { int v,next; }e[M],E[M],Ee[M]; int head[N],cnt,HEAD[N],CNT,Head[N]; inline void add(int u,int v) { e[++cnt].v=v; Ee[cnt].v=u; e[cnt].next=head[u]; Ee[cnt].next=Head[v]; Head[v]=head[u]=cnt; } inline void ADD(int u,int v) { E[++CNT].v=v; E[CNT].next=HEAD[u]; HEAD[u]=CNT; } int f[N][LOGN],dep[N]; int getlca(int a,int b) { int i; if(dep[a]<dep[b])swap(a,b); for(i=LOGN-1;i>=0;i--) if(dep[f[a][i]]>=dep[b])a=f[a][i]; if(a==b)return a; for(i=LOGN-1;i>=0;i--) if(f[a][i]!=f[b][i]) a=f[a][i],b=f[b][i]; return f[a][0]; } int d[N],ans[N]; queue<int>q; int dfs(int x) { ans[x]=1; for(int i=HEAD[x];i;i=E[i].next) ans[x]+=dfs(E[i].v); return ans[x]; } int n; int main() { int i,j,k; int a,b,c; int u,v,lca; scanf("%d",&n); for(i=1;i<=n;i++) { while(scanf("%d",&a),a) { add(a,i); d[i]++; } } for(i=1;i<=n;i++)if(!d[i])add(n+1,i),d[i]=1; q.push(n+1); while(!q.empty()) { u=q.front(),q.pop(); lca=0; for(i=Head[u];i;i=Ee[i].next) { v=Ee[i].v; if(i==Head[u])lca=v; else lca=getlca(lca,v); } for(i=head[u];i;i=e[i].next) { d[v=e[i].v]--; if(!d[v])q.push(v); } if(lca) { ADD(lca,u),f[u][0]=lca; for(j=1;j<LOGN;j++) f[u][j]=f[f[u][j-1]][j-1]; } dep[u]=dep[lca]+1; } dfs(n+1); for(i=1;i<=n;i++)printf("%d ",ans[i]-1); return 0; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美日韩小视频 | 日韩视频中文字幕 | 国产精品无码专区在线观看 | 欧美一区二区精品 | 久热精品在线 | 精品无码久久久久久久动漫 | 国产高清免费视频 | 免费一级淫片aaa片毛片a级 | 精品国产乱码久久久久久影片 | 久久久久久久久99精品大 | 麻豆视频传媒入口 | 国产一区二区免费在线观看 | 日韩精品电影 | 日日艹 | 久久y| 在线免费国产 | 国产成人精品一区二区 | 青青草综合 | 精品欧美一区二区三区久久久 | 国产精品久久久久久久免费软件 | 成人欧美一区二区三区视频网页 | 色综合久久久 | 亚洲乱码一区二区三区在线观看 | 国产欧美日韩在线观看 | 国产精品毛片一区二区在线看 | 日韩久久久 | 538国产精品视频一区二区 | 9999毛片| 日韩精品一区二区三区电影在线看 | 美女一区二区三区 | 亚洲一二三区在线 | 99re在线观看 | 综合久久婷婷 | 欧美性video 精品成人久久 | 国产黄a三级三级看三级 | 中国一级片在线 | 亚洲精品视频在线观看视频 | 国产99久久| 久久久久久久久国产 | 女人一区二区三区 | 国产精品久久久久久久久久尿 |