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

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

求LCA(最近公共祖先)

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

算法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
国产精品私拍pans大尺度在线| 日韩网站在线观看| 91高清视频在线免费观看| www.精品av.com| 欧美在线视频网站| 国产女精品视频网站免费| 国产精品老牛影院在线观看| 91精品综合视频| 国产精品中文字幕在线| 久久精品视频在线| 综合136福利视频在线| 欧美夫妻性视频| 日韩av最新在线| 亚洲精品成人久久久| 欧美成人免费一级人片100| 欧美久久久精品| 亚洲一区第一页| 亚洲国产女人aaa毛片在线| 日韩欧美视频一区二区三区| 亚洲精品日韩av| 97超级碰碰碰久久久| 日韩免费观看高清| 精品国产一区二区三区久久久狼| 久久久精品免费视频| 日本精品va在线观看| 国产在线拍揄自揄视频不卡99| 亚洲国产精品成人av| 久久影院资源站| …久久精品99久久香蕉国产| 欧美精品videofree1080p| 97久久精品人人澡人人爽缅北| 国产原创欧美精品| 国内精品久久久久久久久| 国产精品 欧美在线| 亚洲欧洲在线看| 成人免费高清完整版在线观看| 992tv成人免费影院| 97免费视频在线播放| 欧美最猛性xxxxx亚洲精品| 欧美精品国产精品日韩精品| 欧美日产国产成人免费图片| 91在线视频九色| 夜夜嗨av一区二区三区四区| 91成人精品网站| 亚洲毛片在线看| 国产日韩精品在线| 亚洲国产欧美一区二区丝袜黑人| 成人h片在线播放免费网站| 亚洲电影中文字幕| 国产精品人成电影在线观看| 亚洲最大av在线| 欧美日本高清一区| 国产区精品在线观看| 91在线免费视频| 992tv成人免费影院| 中文字幕久久亚洲| 国产亚洲视频中文字幕视频| 欧美性生交xxxxx久久久| 成人精品一区二区三区电影免费| 国产精品∨欧美精品v日韩精品| 久久99热这里只有精品国产| 国产精品999| 亚洲欧美另类自拍| 国产精品电影网| 欧美激情va永久在线播放| 国产又爽又黄的激情精品视频| 性色av一区二区咪爱| 亚洲视频在线视频| 亚洲在线免费看| 久久亚洲精品毛片| 午夜精品蜜臀一区二区三区免费| 97国产精品视频| 精品久久久久久久大神国产| 最近2019年中文视频免费在线观看| 久久久精品一区二区| 98精品国产自产在线观看| 欧美激情a∨在线视频播放| 亚洲欧美综合v| 亚洲成人av在线| 欧美性一区二区三区| 国内成人精品一区| 久久97精品久久久久久久不卡| 91精品视频网站| 精品国产鲁一鲁一区二区张丽| 欧美日韩中文字幕| 中文字幕久久久| 久久久久久亚洲精品不卡| 欧美性猛交xxxx乱大交3| 深夜精品寂寞黄网站在线观看| 日本亚洲精品在线观看| 亚洲精品日韩久久久| 91麻豆桃色免费看| 日本精品视频网站| 日韩在线观看免费全集电视剧网站| 国产一区二区三区在线观看视频| 欧美激情精品久久久久久久变态| 亚洲人成自拍网站| 国产精品 欧美在线| 国产一区二区在线免费| 欧美激情视频一区二区| 51ⅴ精品国产91久久久久久| 成人午夜一级二级三级| 亚洲国模精品私拍| 91av在线影院| 亚洲自拍高清视频网站| 欧美在线www| 日韩在线高清视频| 欧美另类交人妖| 久久99国产精品自在自在app| 亚洲精选在线观看| 欧美激情视频一区二区| 欧美人在线观看| 91大神在线播放精品| 韩国19禁主播vip福利视频| 亚洲欧美在线一区二区| 国产偷亚洲偷欧美偷精品| 久久亚洲精品毛片| 91成人天堂久久成人| 欧美另类极品videosbest最新版本| 亚洲日本成人女熟在线观看| 97久久精品国产| 少妇高潮久久77777| 麻豆国产va免费精品高清在线| 亚洲天堂av在线免费观看| 欧洲日本亚洲国产区| 国产亚洲精品日韩| 91精品国产亚洲| 欧美日韩中文在线| 国产精品激情av在线播放| 国产精品国产亚洲伊人久久| 国产成人精品久久亚洲高清不卡| 最近2019中文字幕mv免费看| 欧美一区二区三区精品电影| 亚洲欧美日韩中文视频| 国产精品视频久久| 91精品国产91久久久| 久久久国产影院| 久久男人av资源网站| 成人网在线视频| 亚洲一区二区三区sesese| 精品国产视频在线| 欧美人在线视频| 欧美午夜精品久久久久久久| 欧美久久久精品| 少妇av一区二区三区| 亚洲最大激情中文字幕| 久久国产精品久久精品| 欧美一乱一性一交一视频| 中日韩午夜理伦电影免费| 久久五月天色综合| 亚洲欧美国产va在线影院| 亚洲第一av在线| 久久久久久久网站| 精品久久久久久久久久久久| 美女精品视频一区| 国产欧美久久久久久| 亚洲福利在线观看| 午夜精品www| 欧美在线www| 色偷偷噜噜噜亚洲男人| 北条麻妃一区二区三区中文字幕| 国产精品久久久一区| 98精品国产自产在线观看| 亚洲欧美激情四射在线日|