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

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

求LCA(最近公共祖先)

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

算法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精品视频| 九九九久久国产免费| 亚洲国产精品专区久久| 欧美福利小视频| 亚洲在线第一页| 午夜剧场成人观在线视频免费观看| 精品国产老师黑色丝袜高跟鞋| 亚洲欧美中文日韩在线| 欧美又大又硬又粗bbbbb| 欧美综合国产精品久久丁香| 亚洲女人初尝黑人巨大| 中文字幕日韩欧美| 久久免费国产视频| 欧美日韩福利在线观看| 国产精品久久久久久一区二区| 国产亚洲精品久久久久久牛牛| 日韩精品视频在线观看网址| 亚洲欧美在线免费观看| 91免费人成网站在线观看18| 日韩免费电影在线观看| 日韩av免费在线播放| 国产精品老女人精品视频| 韩国日本不卡在线| 一区二区在线视频播放| 欧美丝袜美女中出在线| 亚洲国产91精品在线观看| 亚洲字幕在线观看| 精品国产31久久久久久| 亚洲人成网站色ww在线| 国产精品久久一| 亚洲天堂2020| 日韩av手机在线观看| 国产精品男女猛烈高潮激情| 91免费在线视频| 91精品国产综合久久香蕉| 亚洲最大av在线| 国产精品久久久久高潮| 78色国产精品| 日韩av在线精品| 色婷婷成人综合| 精品人伦一区二区三区蜜桃网站| 成人精品aaaa网站| 夜夜嗨av一区二区三区四区| 欧美激情在线狂野欧美精品| 欧美午夜精品久久久久久久| 欧美www在线| 亚洲最大的av网站| 日韩欧美在线一区| 国产精品中文字幕在线观看| 欧美午夜激情小视频| 一本色道久久88综合日韩精品| 日本一欧美一欧美一亚洲视频| 久久人91精品久久久久久不卡| 国产精品人人做人人爽| 欧美体内谢she精2性欧美| 欧美黑人xxx| 亚洲精品小视频| 亚洲欧美中文另类| 亚洲精品成人久久电影| 91精品国产乱码久久久久久久久| 欧美日韩国产一区二区| 久久夜精品香蕉| 国产精品都在这里| 国产成人精品日本亚洲专区61| 亚洲一区二区在线播放| 久久久黄色av| 亚洲二区在线播放视频| 国产日韩欧美在线看| 最近免费中文字幕视频2019| 久久在线免费观看视频| 亚洲国产精品一区二区久| 狠狠躁夜夜躁久久躁别揉| 久久久久久香蕉网| 九九热最新视频//这里只有精品| 97精品在线观看| 日韩欧美在线中文字幕| 91精品免费看| 久久精品小视频| 中文字幕日韩精品在线观看| 91亚洲精华国产精华| 欧美成人午夜免费视在线看片| 国产97人人超碰caoprom| 亚洲国产天堂久久综合网| 亚洲精品小视频| 日韩av在线导航| 奇米4444一区二区三区| 亚洲国语精品自产拍在线观看| 亚洲人成在线电影| 情事1991在线| 91久久久久久国产精品| 久久久久女教师免费一区| 日本欧美爱爱爱| 亚洲色图欧美制服丝袜另类第一页| 69国产精品成人在线播放| 亚洲成人久久久久| 欧美在线亚洲一区| 日韩美女免费视频| 97涩涩爰在线观看亚洲| 久久亚洲精品毛片| 成人国产精品av| 精品成人国产在线观看男人呻吟| 亚州国产精品久久久| 91中文字幕在线观看| 国产精品第一区| 久久综合久中文字幕青草| 91九色国产视频| 亚洲成人久久久| 欧美在线不卡区| 国产精品欧美日韩久久| 97人洗澡人人免费公开视频碰碰碰| 亚洲国产精品热久久| 中文字幕亚洲精品| 国产精品久久久久久久久久久久久久| …久久精品99久久香蕉国产| 日韩精品在线免费播放| 欧美大片网站在线观看| 韩国精品久久久999| 亚洲最大中文字幕| 亚洲跨种族黑人xxx| 国产精品久久久久久久7电影| 亚洲国产欧美在线成人app| 中文字幕久久亚洲| 国产精品福利无圣光在线一区| 日本国产欧美一区二区三区| 成人黄色生活片| 成人精品视频久久久久| zzjj国产精品一区二区| 久久久免费高清电视剧观看| 97色在线观看免费视频| 欧美精品福利在线| 国产精品久久久久久久一区探花| 国产精品久久久久久久app| 97精品国产97久久久久久| 欧美裸体xxxxx| 亚洲免费视频在线观看| 97超碰蝌蚪网人人做人人爽| 国产欧美日韩精品专区| 国产精品中文字幕在线观看| 色偷偷偷综合中文字幕;dd| 日本亚洲欧美成人| 国内精品久久久久影院 日本资源| 中文日韩在线视频| 国产精品久久婷婷六月丁香| 亚洲欧美精品中文字幕在线| 国产精品亚洲网站| 91av在线不卡| 日韩欧美a级成人黄色| 91精品国产高清自在线看超| 日韩欧美成人精品| 久久久在线观看| 日韩av电影国产| 97久久久免费福利网址| 成人一区二区电影| 日韩中文综合网| 色天天综合狠狠色| 亚洲网站视频福利| 亚洲va电影大全| 欧美日韩国产中文字幕| 日韩国产一区三区| 久久电影一区二区| 俺去了亚洲欧美日韩| 精品毛片三在线观看| 国产欧美在线观看| 欧美激情xxxxx|