日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 2874 Connections between cities(LCA离线算法实现)

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 2874 Connections between cities(LCA离线算法实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://acm.hdu.edu.cn/showproblem.php?pid=2874

題意:

求兩個城市之間的距離。

?

思路:

LCA題,注意原圖可能不連通。

如果不了解離線算法的話,可以看我之前博客寫的解釋http://www.cnblogs.com/zyb993963526/p/7295894.html

1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<sstream> 6 #include<vector> 7 #include<stack> 8 #include<queue> 9 #include<cmath> 10 #include<map> 11 #include<set> 12 using namespace std; 13 typedef long long ll; 14 typedef pair<int,int> pll; 15 const int INF = 0x3f3f3f3f; 16 const int maxn=10000+5; 17 const int M=1000010; 18 19 int n, m, c; 20 int etot,qtot; 21 int ehead[maxn]; 22 int qhead[maxn]; 23 int mark[maxn]; 24 int dis[maxn]; 25 int vis[maxn]; 26 27 int ans[M]; 28 int p[maxn]; 29 30 struct node 31 { 32 int v,w; 33 int next; 34 }e[2*maxn]; 35 36 struct Node 37 { 38 int v; 39 int index; 40 int next; 41 }query[2*M]; 42 43 void addEdge(int u, int v, int w) 44 { 45 e[etot].v=v; 46 e[etot].w=w; 47 e[etot].next=ehead[u]; 48 ehead[u]=etot++; 49 } 50 51 void addQuery(int u, int v, int i) 52 { 53 query[qtot].v=v; 54 query[qtot].index=i; 55 query[qtot].next=qhead[u]; 56 qhead[u]=qtot++; 57 } 58 59 int Find(int x) 60 { 61 return p[x]==x?x:p[x]=Find(p[x]); 62 } 63 64 void LCA(int u) 65 { 66 vis[u]=1; 67 for(int i=qhead[u];i!=-1;i=query[i].next) 68 { 69 int v=query[i].v; 70 if(vis[v] && !mark[Find(v)]) //mark數組是為了針對非連通圖的情況 71 ans[query[i].index]=dis[u]+dis[v]-2*dis[Find(v)]; 72 } 73 74 for(int i=ehead[u];i!=-1;i=e[i].next) 75 { 76 int v=e[i].v; 77 if(!vis[v]) 78 { 79 dis[v]=dis[u]+e[i].w; 80 LCA(v); 81 p[v]=u; 82 } 83 } 84 } 85 86 int main() 87 { 88 //freopen("in.txt","r",stdin); 89 while(~scanf("%d%d%d",&n,&m,&c)) 90 { 91 etot=qtot=0; 92 memset(qhead,-1,sizeof(qhead)); 93 memset(ehead,-1,sizeof(ehead)); 94 for(int i=1;i<=n;i++) p[i]=i; 95 96 while(m--) 97 { 98 int u,v,w; 99 scanf("%d%d%d",&u,&v,&w); 100 addEdge(u,v,w); 101 addEdge(v,u,w); 102 } 103 104 for(int i=1;i<=c;i++) 105 { 106 int u,v; 107 scanf("%d%d",&u,&v); 108 addQuery(u,v,i); 109 addQuery(v,u,i); 110 } 111 112 memset(ans,-1,sizeof(ans)); 113 memset(vis,0,sizeof(vis)); 114 memset(mark,0,sizeof(mark)); 115 for(int i=1;i<=n;i++) 116 { 117 if(!vis[i]) 118 { 119 dis[i]=0; 120 LCA(i); 121 mark[i]=1; 122 } 123 } 124 for(int i=1;i<=c;i++) 125 { 126 if(ans[i]==-1) puts("Not connected"); 127 else printf("%d\n",ans[i]); 128 } 129 } 130 return 0; 131 }

?

轉載于:https://www.cnblogs.com/zyb993963526/p/7295969.html

總結

以上是生活随笔為你收集整理的HDU 2874 Connections between cities(LCA离线算法实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜一级 | 女优视频在线观看 | 天天草夜夜草 | 午夜福利啪啪片 | 久久久久久国产 | 亚洲a一区 | 精品久久一 | 在线播放不卡 | 国产美女免费网站 | 丁香激情网| 51av视频 | 日韩精品在线观看中文字幕 | 丁香六月色 | 小香蕉影院 | sm久久捆绑调教精品一区 | 九九热在线播放 | 免费播放毛片精品视频 | 日本一级视频 | 亚洲国产aⅴ精品一区二区的游戏 | 国产精品一区二区在线 | 欧美xxxx中国 | 超碰在97| 青青青视频免费观看 | 狠狠躁夜夜躁人人爽天天高潮 | 男人天堂社区 | 51成人做爰www免费看网站 | 奇米狠狠777 | 丰满人妻综合一区二区三区 | av毛片在线免费看 | 国产原创麻豆 | 精品久操| 国产伦精品一区二区三区免费迷 | 在线观看日本网站 | 精品欧美一区二区三区免费观看 | 国产日产亚洲系列最新 | 亚洲成年人av | 欧美三级视频在线播放 | 奇米影视在线观看 | 超碰综合在线 | 日本人妻换人妻毛片 | 最新国产黄色网址 | 精品久草| 无码人妻丰满熟妇区毛片18 | 韩国日本在线观看 | 成人28深夜影院 | 成人午夜视频在线 | 7799精品视频| 日本欧美一区二区三区不卡视频 | 激情综合色 | av手机免费看 | 中国浓毛少妇毛茸茸 | 中文字幕免费高清在线观看 | 香蕉伊思人视频 | 四虎在线免费 | av官网在线 | 香蕉人妻av久久久久天天 | 苍井空亚洲精品aa片在线播放 | 国产精品羞羞答答在线 | 一级片一级| 伊人亚洲影院 | 天天操天天操天天干 | 久草成人在线 | 91看片网| 久久久在线 | 亚洲av无码一区二区二三区 | 国产老女人精品毛片久久 | 国产精品毛片一区二区在线看 | 人妻丰满熟妇岳av无码区hd | 国产51自产区 | 国产精品自拍偷拍视频 | 99国内揄拍国内精品人妻免费 | av在线观 | 欧美成人一区二免费视频软件 | mm131美女大尺度私密照尤果 | 麻豆md0034在线观看 | 成人久久18免费网站图片 | 午夜久久 | 日韩黄色精品 | 成人久久久久 | 天天干狠狠操 | 久久国产视频一区 | 国产人妻精品一区二区三区 | 国产天堂第一区 | 成人av综合网| 91成人国产综合久久精品 | 国产精品第9页 | a级黄色小说 | 久久久久亚洲av成人网人人软件 | 99热播精品| 色呦呦 | 天天天天操 | 亚洲丝袜中文字幕 | 久久女人 | 久久视频免费 | www.精品久久| 色婷婷成人| 久久久久久久久蜜桃 | 精品欧美一区二区三区 | 美女扒开尿口给男人捅 |