亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

求LCA(最近公共祖先)

2019-11-11 04:03:52
字體:
來源:轉載
供稿:網友

算法1:樹上倍增

//HDU 2586#include <cstdio>#include <algorithm>#include <cstring>#define maxn 40000+5#define INF 999999999using namespace std;int n,m,T,Q,head[maxn],x,y,z,vis[maxn],fa[maxn],cost[maxn],dep[maxn],maxcost[maxn][20],anc[maxn][20];struct xx{ int v,next,q;}b[maxn];void add(int u,int v,int q){ b[++m]=(xx){v,head[u],q}; head[u]=m;}int dfs(int t){ vis[t]=1; for (int k=head[t];k!=0;k=b[k].next) if (!vis[b[k].v]) fa[b[k].v]=t,cost[b[k].v]=b[k].q,dep[b[k].v]=dep[t]+1,dfs(b[k].v);}int ST(){ for (int i=1;i<=n;i++) { anc[i][0]=fa[i];maxcost[i][0]=cost[i]; for (int j=1;(1<<j)<=n;j++) anc[i][j]=0; } for (int j=1;(1<<j)<=n;j++) for (int i=1;i<=n;i++) { int a=anc[i][j-1]; anc[i][j]=anc[a][j-1]; maxcost[i][j]=maxcost[i][j-1]+maxcost[a][j-1]; }}int query(int p,int q){ int ans=0,log; if (dep[p]<dep[q])swap(p,q); for (log=1;(1<<log)<=dep[p];log++);log--; for (int i=log;i>=0;i--) if (dep[p]-(1<<i)>=dep[q]) ans+=maxcost[p][i],p=anc[p][i]; if (p==q) return ans; for (int i=log;i>=0;i--) if (anc[p][i]&&anc[p][i]!=anc[q][i]) { ans+=maxcost[p][i]+maxcost[q][i]; p=anc[p][i];q=anc[q][i] ; } ans+=maxcost[p][0]+maxcost[q][0]; return ans;}int main(){ scanf("%d",&T); while (T--) { m=0; memset(head,0,sizeof(head)); memset(fa,0,sizeof(fa)); memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&Q); for (int i=1;i<n;i++) scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,z); dfs(1); ST(); while (Q--) { scanf("%d%d",&x,&y); 算法2:Tarjan

include <cstdio>#include <algorithm>#include <cstring>#define maxn 80000+5using namespace std;int Q,dis[maxn],T,x,y,z,n,m,num,head[maxn],vis[maxn],fa[maxn],h[maxn],ans[maxn];struct xx{ int v,next,q;}b[maxn];struct yy{ int u,v,next,num;}b2[405];void add(int u,int v,int q){ b[++m]=(xx){v,head[u],q}; head[u]=m;}void _add(int u,int v,int q){ b2[++num]=(yy){u,v,h[u],q}; h[u]=num;}int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}int dfs(int t,int val){ dis[t]=val; fa[t]=t; //vis[t]=1; for (int k=head[t];k!=0;k=b[k].next) { int v=b[k].v; if (!vis[v]) vis[v]=1,dfs(v,val+b[k].q),fa[v]=t; } for (int k=h[t];k!=0;k=b2[k].next) if (vis[b2[k].v]) { ans[b2[k].num]=dis[t]+dis[b2[k].v]-(dis[find(b2[k].v)]*2); } return 0;}int main(){ scanf("%d",&T); while (T--) { m=num=0; memset(head,0,sizeof(head)); memset(h,0,sizeof(h)); memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&Q); for (int i=1;i<n;i++) scanf("%d%d%d",&x,&y,&z),add(x,y,z),add(y,x,z); for (int i=1;i<=Q;i++) { scanf("%d%d",&x,&y); _add(x,y,i); _add(y,x,i); } vis[1]=1;dfs(1,0); for (int i=1;i<=Q;i++) printf("%d/n",ans[i]); } return 0;}

被數據坑得很慘,開始先寫了倍增,數組只開了40000,但是神奇的A了。So后來寫Tarjan時也只開了40000,一直RE不明所以,找了很久錯QAQ……然后把數組開了兩倍大(雙向邊)就沒有然后了……


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品久久一区二区| 日韩欧美国产中文字幕| 久久久噜噜噜久久久| 精品久久久久久久久久久久久久| 亚洲精品国偷自产在线99热| 国产在线播放91| 亚洲免费伊人电影在线观看av| 一个人看的www久久| 欧美黑人xxx| 成人欧美一区二区三区在线湿哒哒| 欧美激情第6页| 欧美性猛交xxxx免费看久久久| 8x海外华人永久免费日韩内陆视频| 日韩精品电影网| 国产成人亚洲综合青青| 亚洲成人激情图| 中文字幕国产日韩| 国产精品久久久久久久av大片| 国产成人精品a视频一区www| 九九视频这里只有精品| 国产精品白嫩美女在线观看| 福利视频导航一区| 亚洲成av人乱码色午夜| 中文字幕久久亚洲| 久久久久五月天| 亚洲理论片在线观看| 丝袜美腿亚洲一区二区| 日韩国产欧美精品在线| 播播国产欧美激情| 欧美日韩一区免费| 国产精品国产福利国产秒拍| 国产成人精品综合久久久| 91系列在线播放| 欧美极品美女电影一区| 最近2019年中文视频免费在线观看| www.亚洲人.com| 国产精品99久久99久久久二8| 在线观看免费高清视频97| 日韩av免费网站| 久久综合国产精品台湾中文娱乐网| 亚洲а∨天堂久久精品9966| 日韩av一区二区在线| 日韩中文字幕视频| 日韩av大片免费看| 亚洲综合日韩在线| 久久91精品国产91久久久| 日韩欧美视频一区二区三区| 懂色av中文一区二区三区天美| 最近2019年好看中文字幕视频| 欧美激情一区二区三区久久久| 美女精品久久久| 亚洲欧洲高清在线| 日韩国产高清视频在线| 亚洲精品网站在线播放gif| 国产一区二区三区视频在线观看| 久久伊人精品一区二区三区| 欧美大秀在线观看| 国产日韩中文字幕| 亚洲福利在线视频| 久久网福利资源网站| 欧美成人在线影院| 国产91精品视频在线观看| 久久久久久这里只有精品| 91黑丝高跟在线| 97在线视频免费播放| 久久视频在线视频| 欧美乱妇高清无乱码| 久久91亚洲精品中文字幕| 亚洲free性xxxx护士白浆| 日韩在线视频播放| 欧美日韩精品二区| 日韩中文在线中文网三级| 91免费高清视频| 欧美激情影音先锋| 亚洲精品欧美日韩| 色综合男人天堂| 国产精品h在线观看| 成人av资源在线播放| 国产精品视频26uuu| 热久久免费视频精品| 国产性色av一区二区| 欧美成人激情视频免费观看| 欧美美最猛性xxxxxx| 精品在线小视频| 538国产精品视频一区二区| 国产一区二区三区高清在线观看| 亚洲精品一区中文| 欧美激情一区二区三区在线视频观看| 欧洲s码亚洲m码精品一区| 日韩美女中文字幕| 日韩精品免费电影| 57pao成人永久免费视频| 91精品久久久久久久久不口人| 麻豆精品精华液| 欧美日韩国产成人在线| 欧美日韩中文在线| 日韩暖暖在线视频| 欧美日韩在线观看视频| 伊人激情综合网| 久久久久久久久久久人体| 最近2019中文字幕mv免费看| 中文字幕亚洲欧美一区二区三区| 亚洲日韩欧美视频一区| 精品在线观看国产| 永久免费毛片在线播放不卡| 久久国产视频网站| 亚洲欧美在线第一页| 日韩三级影视基地| 成人久久精品视频| 日韩在线观看免费全| 国产精品嫩草视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲精品小视频在线观看| 色偷偷91综合久久噜噜| 亚洲视频电影图片偷拍一区| 成人午夜黄色影院| 国产精品久久久久影院日本| 国产精品成人免费视频| 欧美综合在线第二页| 成人免费视频xnxx.com| 欧美最近摘花xxxx摘花| 欧美天堂在线观看| 久久久久久免费精品| 国产精品视频免费在线观看| 热久久免费国产视频| 久久久久九九九九| 久久精品一本久久99精品| 91产国在线观看动作片喷水| 亚洲护士老师的毛茸茸最新章节| 欧美午夜激情在线| 国产精品视频中文字幕91| 国产精品国产自产拍高清av水多| 久久免费视频在线| 66m—66摸成人免费视频| 色悠悠久久88| www.日韩系列| 国产精品91免费在线| 亚洲天堂网站在线观看视频| 日韩美女在线看| 国产精品久久久久久婷婷天堂| 国产精品青青在线观看爽香蕉| 日韩欧美视频一区二区三区| 日韩专区在线播放| 国产精品老牛影院在线观看| 亚洲国产精品高清久久久| 亚洲最大av在线| 日韩国产欧美精品在线| 欧美一区三区三区高中清蜜桃| www国产精品com| 欧美理论电影在线播放| 欧美成人免费网| 欧美乱大交xxxxx另类电影| 亚洲iv一区二区三区| 精品香蕉在线观看视频一| 精品国产91久久久久久老师| 久久成人国产精品| 久久久久久久久亚洲| 91精品国产高清久久久久久91| 不卡在线观看电视剧完整版| 日韩精品在线观看一区二区| 欧美激情va永久在线播放| 欧美日韩国产精品一区二区三区四区| 精品毛片三在线观看| 国内久久久精品|