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

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

求LCA(最近公共祖先)

2019-11-11 05:32:39
字體:
來源:轉載
供稿:網友

算法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美女福利视频高清| 色中色综合影院手机版在线观看| 国产精品一区二区久久| xxxx性欧美| 欧美在线一级va免费观看| 亚洲人成在线观| 久久九九国产精品怡红院| 91精品国产91久久久| 欧美成人精品影院| 久久久久久网站| 国产精品久久久久久久久久久新郎| 欧美国产日韩二区| 精品日本美女福利在线观看| 亚洲天堂免费观看| 亚洲国产另类久久精品| 成人免费福利在线| 热99久久精品| 国产精品入口福利| 欧美整片在线观看| 欧美日韩激情小视频| 456亚洲影院| 久久久国产91| 欧美老肥婆性猛交视频| 亚洲国产福利在线| 国产精品久久久久久久久久99| 91精品视频在线看| 在线播放日韩精品| 成人精品一区二区三区电影免费| 欧美日韩免费在线观看| 亚洲综合国产精品| 亚洲人成电影在线播放| 欧美大片欧美激情性色a∨久久| 久久天天躁狠狠躁夜夜爽蜜月| 57pao精品| 日韩电影视频免费| www.亚洲天堂| 最好看的2019的中文字幕视频| 日韩综合中文字幕| 国产精品高清网站| 欧美中文在线免费| 国产精品一久久香蕉国产线看观看| 在线亚洲午夜片av大片| 亚洲国产精品热久久| 欧美激情亚洲国产| 欧美日韩精品在线| 亚洲国产成人在线视频| 在线精品高清中文字幕| 日韩女在线观看| 日韩视频在线观看免费| 日韩视频免费大全中文字幕| 国产精品免费一区二区三区都可以| 亚洲午夜精品久久久久久久久久久久| 精品久久久久久电影| 亚洲精品视频免费在线观看| 欧美日韩亚洲精品一区二区三区| 欧美日韩中文字幕在线视频| 欧美激情网友自拍| 欧洲精品在线视频| 国产精品第一视频| 色婷婷av一区二区三区久久| 亚洲视频在线播放| 国产成人精品久久久| 日韩国产高清视频在线| 一区二区三区www| 日韩精品在线视频美女| 欧美精品在线免费观看| 91免费福利视频| 97色伦亚洲国产| 69国产精品成人在线播放| 欧美日韩一二三四五区| 亚洲影院色在线观看免费| 国模视频一区二区三区| 成人久久久久久久| 91精品在线一区| 日韩在线视频二区| 最近2019年好看中文字幕视频| 欧美午夜美女看片| 精品视频在线导航| 久久在线免费视频| 国产精品在线看| 色妞在线综合亚洲欧美| 日韩美女免费视频| 国产成人精品综合| 国产精品久久久久久av福利| 性色av一区二区三区免费| 欧美电影在线观看| 日韩亚洲成人av在线| 亚洲精品国产suv| 亚洲人成五月天| 国产亚洲欧洲高清一区| 中文字幕亚洲无线码在线一区| 欧美亚洲国产日本| xxxxxxxxx欧美| 亚洲欧美日韩国产成人| 欧美日韩国产黄| 国产精品久久久久秋霞鲁丝| 日韩中文字幕久久| 欧美激情a在线| 欧美日韩在线免费| 欧美亚洲一级片| 欧美精品18videos性欧| 亚洲欧美日韩一区二区在线| 91成人性视频| 亚洲天堂av电影| 97超碰色婷婷| 午夜精品蜜臀一区二区三区免费| 超碰91人人草人人干| 日韩精品免费综合视频在线播放| 日韩精品在线观看视频| 国产精品jizz在线观看麻豆| 欧美刺激性大交免费视频| 久久伊人色综合| 成人在线中文字幕| 欧美日韩中文在线观看| 中文字幕亚洲一区二区三区| 在线观看欧美日韩| 欧美猛男性生活免费| 久久久久久久久久国产精品| 在线精品高清中文字幕| 搡老女人一区二区三区视频tv| 正在播放欧美视频| 久久免费视频在线| 国产精品露脸自拍| 久久夜色精品亚洲噜噜国产mv| 91久热免费在线视频| 精品久久久久久久久中文字幕| 国产欧美精品va在线观看| 国产亚洲成av人片在线观看桃| 国产女人18毛片水18精品| 91精品国产综合久久香蕉最新版| 热久久这里只有| 国模gogo一区二区大胆私拍| 国产欧美日韩中文字幕在线| 国产日韩专区在线| 日韩欧美一区二区三区久久| 另类视频在线观看| 91系列在线观看| 韩曰欧美视频免费观看| 日本精品视频在线观看| 成人网在线观看| 日韩av在线一区| 成人免费福利在线| 国产精品视频中文字幕91| 中文一区二区视频| 国产精品91在线观看| 亚洲午夜国产成人av电影男同| 久久国产精品电影| 91欧美精品成人综合在线观看| 国产精品入口福利| 久久免费观看视频| 日韩av电影免费观看高清| 国产成人精品a视频一区www| 国产欧美精品一区二区三区-老狼| 精品福利一区二区| 米奇精品一区二区三区在线观看| 日韩中文字幕在线看| 136fldh精品导航福利| 北条麻妃久久精品| 国产成人精品电影|