日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组

發布時間:2024/3/26 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6203

題意:n+1 個點 n 條邊的樹(點標號 0 ~ n),有若干個點無法通行,導致 p 組 U V 無法連通。問無法通行的點最少有多少個。

解法:按照詢問的LCA深度排序,然后順序標記每個詢問的LCA。根據所給的樹(任意點為根)預處理出每個點的前序 DFS 序和后序 DFS 序(需統一標號),及點的深度。根據 p 組 U V 處理每組兩點的 LCA 。壓入優先隊列(LCA 深度大的點優先出隊)。對于出隊的 U V 及其對應的 LCA ,判斷點 U 或點 V 是否在之前已禁止的某點的子樹中,對于某點U如果在禁止通行的點P的子樹中,則L[P]<=L[U]<=R[U]<=R[P]一定成立。所以可以利用樹狀數組區間更新單點查詢,對于每個禁止通行點標記區間L[P],R[P]的所有節點。查詢的時候如果L[U]被標記,說明U,V已經被隔斷。

?

#include <bits/stdc++.h> using namespace std; const int maxn = 20100; typedef long long LL; vector <int> G[maxn]; int n, m, dfsclk, c[maxn], fa[maxn][21], dep[maxn], L[maxn], R[maxn]; bool vis[maxn]; struct node{int u,v,uv;node(){}node(int u,int v,int uv):u(u),v(v),uv(uv){}bool operator<(const node &rhs)const{return dep[uv]<dep[rhs.uv];} }; void dfs(int x){vis[x]=1;L[x]=++dfsclk;for(int i=0; i<G[x].size(); i++){int v=G[x][i];if(!vis[v]){dep[v]=dep[x]+1;fa[v][0]=x;dfs(v);}}R[x]=++dfsclk; } void init(){for(int j=1; j<=20; j++)for(int i=1; i<=n; i++)fa[i][j] = fa[fa[i][j-1]][j-1]; } int LCA(int u, int v){if(dep[u]<dep[v]) swap(u,v);for(int i=20; i>=0; i--){if((dep[u]-dep[v])&(1<<i))u=fa[u][i];}if(u==v) return u;for(int i=20; i>=0; i--){if(fa[u][i]!=fa[v][i]){u=fa[u][i];v=fa[v][i];}}return fa[u][0]; } int lowbit(int x){return x&(-x); } void add(int x, int v){while(x<maxn){c[x]+=v;x+=lowbit(x);} } void update(int x, int y, int z){add(x, z);add(y+1, -z); } int query(int x){int ret=0;while(x>0){ret+=c[x];x-=lowbit(x);}return ret; } int main() {while(~scanf("%d", &n)){memset(c, 0, sizeof(c));memset(vis, 0, sizeof(vis));memset(dep, 0, sizeof(dep));for(int i=0; i<=n+1; i++) G[i].clear();for(int i=1; i<=n; i++){int u,v;scanf("%d %d", &u,&v);u++,v++;G[u].push_back(v);G[v].push_back(u);}n++;dfsclk = 0;dfs(1);init();priority_queue <node> q;scanf("%d", &m);while(m--){int u, v;scanf("%d %d", &u,&v);u++;v++;int uv = LCA(u, v);q.push(node(u,v,uv));}int ans=0;while(!q.empty()){node now = q.top();q.pop();int flag = query(L[now.u])+query(L[now.v]);if(flag==0){ans++;update(L[now.uv],R[now.uv],1);}}printf("%d\n", ans);}return 0; }

?

轉載于:https://www.cnblogs.com/spfa/p/7515837.html

總結

以上是生活随笔為你收集整理的HDU 6203 2017沈阳网络赛 LCA,DFS+树状数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久亚洲精品中文字幕 | 久久久国产一区二区三区 | 污污在线看 | 国产精品xxx视频 | 无码日本精品xxxxxxxxx | 奇米激情 | 日本超碰 | 少妇xxxx | 欧美一区二区三区久久精品 | 免费成人国产 | 最近高清中文在线字幕在线观看 | 杨贵妃颤抖双乳呻吟求欢小说 | 福利电影在线播放 | 亚洲精品一区二区三区在线 | 亚洲精品国产suv一区 | 男操女视频网站 | 国产a国产 | 51吃瓜网今日 | heyzo久久| 国产精品婷婷午夜在线观看 | 人人妻人人澡人人爽精品欧美一区 | 日韩欧美一区在线 | 捆绑少妇玩各种sm调教 | 日韩少妇高潮抽搐 | 亚洲午夜精选 | 亚洲国产免费看 | 性爱动漫 | 又大又粗欧美黑人aaaaa片 | 国产福利电影在线 | 都市激情第一页 | 欧美区一区二 | 成人精品视频一区二区 | 欧美成人精品欧美一级 | 日本一本视频 | 欧美日韩中文在线 | 色网址在线 | 国产免费aa | 国产swag在线观看 | 扩阴视频 | a√天堂资源在线 | 丁香激情小说 | 国产精品一区二区小说 | 国产日韩在线免费观看 | 欧美丰满老熟妇xxxxx性 | 久久久久久久久久久久久久久久久 | 成人黄色免费视频 | 国产一区日韩精品 | 91超碰在 | 96在线视频| 亚洲偷怕 | 天堂国产 | 亚洲天天影视 | 第一页在线| 日本福利在线观看 | 亚洲美女www午夜 | 少妇xxxxxx| 成人av网站在线播放 | 少妇又色又爽又黄的视频 | 色吧五月天 | 夜夜欢视频 | 男人天堂影院 | 91麻豆映画传媒 | 国产精品扒开腿做爽爽爽男男 | 日韩欧美电影一区二区三区 | 亚洲色图图片区 | 亚洲精品短视频 | xxxx日韩| 天天爽夜夜 | 91黄色在线观看 | 国产一区二区激情视频 | 久久午夜精品 | 性欧美lx╳lx╳ | 男女视频免费网站 | 成人www视频 | 一区二区视频在线 | 日本高潮网站 | 亚洲不卡av一区二区 | 欧美视频www | 粉嫩久久99精品久久久久久夜 | 四虎影院国产精品 | 午夜视频国产 | 欧洲精品免费一区二区三区 | 一区二区三区免费观看 | 日本四级电影 | 日韩中文字幕在线免费观看 | 98堂 最新网名| 尤物视频在线观看 | 国产明星换脸xxxx色视频 | 91av综合 | 国产 福利 在线 | 日韩在线精品强乱中文字幕 | 午夜网页| 亚洲综合中文 | 国产香蕉视频在线观看 | 原创露脸88av | 精品国自产在线观看 | 亚洲欧美日韩精品永久在线 | 日本一级片在线播放 | 成人欧美一区二区三区小说 |