国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ2791: [Poi2012]Rendezvous

2019-11-08 02:57:35
字體:
來源:轉載
供稿:網友

這是很多個環套樹,然后理解了題意lca+亂搜什么的…

code:

#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long long#define lowbit(x) x&(-x)using namespace std;const int maxn = 510000;const int maxb = 21;struct edge{ int y,nex; edge(){} edge(int _y,int _nex){y=_y;nex=_nex;}}a[maxn]; int len,fir[maxn];void ins(int x,int y){a[++len]=edge(y,fir[x]); fir[x]=len;}int n,q,_to[maxn];int fa[maxn];int find_(int x){ if(fa[x]==x) return x; return fa[x]=find_(fa[x]);}int bel[maxn],id;bool v[maxn];int c_sum[maxn],c_id[maxn];int sta[maxn],tp;void f_c(int x){ if(v[x]) { int cid=0; int la=0; while(la!=x) { la=sta[tp--]; c_sum[bel[x]]++; c_id[la]=++cid; } return ; } v[x]=true; sta[++tp]=x; f_c(_to[x]);}int tid[maxn],f[maxn][maxb],dep[maxn];void dfs(int x,int rt){ tid[x]=rt; for(int i=1;i<maxb;i++) f[x][i]=f[f[x][i-1]][i-1]; for(int k=fir[x];k;k=a[k].nex) { int y=a[k].y; if(!c_id[y]) { f[y][0]=x; dep[y]=dep[x]+1; dfs(y,rt); } }}int lca(int x,int y){ if(dep[x]<dep[y]) swap(x,y); for(int i=maxb-1;i>=0;i--) if(dep[x]-(1<<i)>=dep[y]) x=f[x][i]; if(x==y) return x; for(int i=maxb-1;i>=0;i--) if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i]; return f[x][0];}int main(){ memset(fir,0,sizeof fir); len=0; scanf("%d%d",&n,&q); for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); ins(x,i); _to[i]=x; fa[find_(x)]=fa[find_(i)]; } memset(bel,0,sizeof bel); id=0; for(int i=1;i<=n;i++) bel[i]=find_(i); memset(c_sum,0,sizeof c_sum); memset(v,false,sizeof v); for(int i=1;i<=n;i++) if(!c_sum[bel[i]]) tp=0,f_c(i); for(int i=1;i<=n;i++) if(c_id[i]) { dep[i]=0; dfs(i,i); } while(q--) { int a1,a2; int x,y; scanf("%d%d",&x,&y); if(bel[x]!=bel[y]){
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵石县| 合川市| 新和县| 丹江口市| 华宁县| 时尚| 淮滨县| 洞头县| 仙游县| 万盛区| 塘沽区| 深州市| 璧山县| 青海省| 冀州市| 敦煌市| 连州市| 铜鼓县| 滦平县| 汨罗市| 邳州市| 托克托县| 大厂| 松原市| 潮安县| 郯城县| 独山县| 汪清县| 嘉善县| 盐源县| 锦屏县| 开江县| 法库县| 平陆县| 织金县| 惠安县| 卓尼县| 长武县| 迁安市| 怀安县| 云浮市|