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

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

求LCA(最近公共祖先)

2019-11-11 03:32:40
字體:
來源:轉載
供稿:網友

算法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
亚洲天堂男人天堂| 日韩在线欧美在线国产在线| 欧美亚洲日本网站| 久久久噜噜噜久噜久久| 亚洲高清久久网| 91久久国产精品| 亚洲成人教育av| 黑人巨大精品欧美一区二区免费| 国产在线999| 国产丝袜一区二区三区| 日韩精品999| 茄子视频成人在线| 欧美日韩国产中字| 久久久久久久久久亚洲| 成人网中文字幕| 永久免费看mv网站入口亚洲| 国产成人精品国内自产拍免费看| 7777精品久久久久久| 91嫩草在线视频| 亚洲欧美国产精品久久久久久久| 国产精品日韩精品| 91精品国产自产在线| 2019国产精品自在线拍国产不卡| 亚州av一区二区| 亚洲国产欧美一区二区三区同亚洲| 国产一区二区成人| 欧美日韩国产成人在线观看| 久久精品国产成人精品| 日本道色综合久久影院| 久久久亚洲精选| 欧美日韩国产丝袜另类| 亚洲国产欧美日韩精品| 欧美富婆性猛交| 亚洲午夜未删减在线观看| 国产在线观看不卡| 久久露脸国产精品| 狠狠躁18三区二区一区| 性欧美长视频免费观看不卡| 国产视频久久久久久久| 久久99国产精品自在自在app| 国产精品69久久| 精品久久久久久久久中文字幕| 91国内在线视频| 欧美性猛交xxxx免费看漫画| 欧美成人剧情片在线观看| 日韩在线免费视频观看| 国产一区红桃视频| 久久激情视频久久| 欧美大片在线看| 2024亚洲男人天堂| 激情久久av一区av二区av三区| 在线日韩av观看| 综合久久五月天| 亚洲一区二区中文字幕| 日本成人在线视频网址| 中文字幕久久久av一区| 国产精品午夜一区二区欲梦| 国产成人精品一区二区在线| 日韩少妇与小伙激情| 日韩在线免费av| 91美女片黄在线观看游戏| 日韩在线观看视频免费| 狠狠躁夜夜躁人人躁婷婷91| 亚洲电影在线看| 97在线看福利| 日韩高清电影免费观看完整版| 69av成年福利视频| 亚洲视频在线观看视频| 亚洲free性xxxx护士hd| 日韩欧美亚洲成人| 中文字幕一区二区三区电影| 国产精品电影在线观看| 久久的精品视频| 亚洲精品v天堂中文字幕| 亚洲免费av电影| 成人久久久久久久| 欧美日本精品在线| 国产精品成人在线| 亚洲精品日韩激情在线电影| 亚洲欧美国产精品va在线观看| 亚洲男人天堂古典| 日韩电视剧在线观看免费网站| 国产成人福利视频| 国产精品尤物福利片在线观看| 色综合久久中文字幕综合网小说| 日韩久久免费视频| 国产精品欧美一区二区| 国内精品400部情侣激情| 九九久久久久久久久激情| 亚洲国产美女精品久久久久∴| 日本精品久久久久影院| 国产成一区二区| 日韩精品久久久久久久玫瑰园| 国产精品自拍偷拍视频| 97国产suv精品一区二区62| 亚洲国产小视频在线观看| 中文字幕亚洲综合| 欧美性猛交xxxx乱大交极品| 日韩一区二区在线视频| 亚洲精品国产精品乱码不99按摩| 欧美亚洲国产日本| 欧美洲成人男女午夜视频| 欧美孕妇孕交黑巨大网站| 亚洲精品97久久| 成人福利在线视频| 日韩欧美亚洲范冰冰与中字| 98精品在线视频| 98午夜经典影视| 欧美日韩中国免费专区在线看| 欧美日韩亚洲一区二区三区| 日韩欧美在线国产| 国产精品丝袜久久久久久不卡| 91在线观看欧美日韩| 欧美性videos高清精品| 91成人福利在线| 国产日韩欧美综合| 日本精品视频在线播放| 91免费看片在线| 日韩精品视频在线免费观看| 日本精品久久久久久久| 亚洲精品色婷婷福利天堂| 成人av色在线观看| 欧美二区在线播放| 欧美二区乱c黑人| 精品国产一区二区三区久久| 91国偷自产一区二区三区的观看方式| 九九热精品在线| 日韩在线精品视频| 国产精品久久久久77777| 日韩精品在线观看一区| 国产亚洲精品一区二555| 久久久精品中文字幕| 成人免费看吃奶视频网站| 免费91在线视频| 97视频在线免费观看| 成人欧美一区二区三区黑人| 26uuu另类亚洲欧美日本老年| 欧美专区福利在线| 亚洲人成伊人成综合网久久久| 国产精品黄色影片导航在线观看| 久久久久久久亚洲精品| 久久青草精品视频免费观看| 欧美电影免费观看| 精品调教chinesegay| 国产精品高潮视频| 久久久久久久香蕉网| 国产精品99久久久久久人| 亚洲片在线资源| 欧美日韩国产va另类| 欧美怡红院视频一区二区三区| 精品久久香蕉国产线看观看亚洲| 亚洲最大中文字幕| 日韩欧美高清在线视频| 日韩成人在线视频观看| 久久亚洲电影天堂| 国产性猛交xxxx免费看久久| 国产成人一区二区在线| 国产精品中文在线| 国产精品一区二区三区成人| 国产91精品久久久| 国产精品福利久久久| 日韩在线欧美在线国产在线| 日本久久精品视频| 亚洲视频欧美视频|