多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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

廣告:

#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; }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲天堂久 | 亚洲小说图片区 | 俄罗斯free嫩交hd | 国产v亚洲v天堂a无 国产v亚洲v天堂无码 | 免费看一区二区三区 | 中国一级淫片aaa毛片毛片 | 免费一级毛片清高播放 | 亚洲 成人 欧美 自拍 | 欧美人与物videos另类3d | 无限国产资源 | 国产精品免费aⅴ片在线观看 | 青青青青爽极品在线视频 | 欧美男同志高清videosbest | 免费高清不卡毛片在线看 | 国产91久久精品一区二区 | 国产嫩草影院精品免费网址 | 国产美女无遮挡免费视频网站 | 国产第4页 | 国产精品一区不卡 | 欧美黑人xxxx性高清版 | 东京干男人都知道的网站 | 亚洲视频在线观看视频 | 久久精品视频观看 | 国产a不卡片精品免费观看 国产a国产片色老头 | 国产在线伊人 | 538在线视频二三区视视频 | 午夜网站视频 | 最近中文字幕高清字幕 | 欧美亚洲一区二区三区 | 欧美性精品hdvideosex | 国产人做人爱视频精品 | 国产日韩亚洲欧美 | 成年人小视频在线观看 | 欧美成人全部免费观看1314色 | 国产一级做a爱片久久毛片a | 国产亚洲精品久久久久91网站 | 日本欧美一区二区三区片 | 日韩亚色| 免费观看欧美一级高清 | 欧美精品一区二区三区久久 | www久久爱|