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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P4768 [NOI2018] 归程(kruskal 重构树)

發(fā)布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P4768 [NOI2018] 归程(kruskal 重构树) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

P4768 [NOI2018] 歸程

給定一個nnn個點,mmm條邊的無向聯(lián)通圖,邊的描述為[u,v,l,a][u, v, l, a][u,v,l,a],表示uuuvvv連有一條長度為lll,海拔為aaa的邊,

QQQ個詢問,每次給出一個出發(fā)點uuu和一個海拔限制高度ppp,并且在出發(fā)點有一輛車,這輛車可以通過海拔大于ppp的邊,

問,從u?>1u->1u?>1的最短步行長度是什么多少。

設(shè)從uuu坐車出發(fā)可到的點集為SSS,我們的任務(wù)就是找到一個點v,v∈Sv, v \in Sv,vSdis(v,1)dis(v, 1)dis(v,1)dis(x,1),x∈Sdis(x, 1),x \in Sdis(x,1),xS中最的小。

① 預(yù)處理出每個點到點111的最短路徑出來,

② 我們按照海拔高度降序建立一顆kruskalkruskalkruskal重構(gòu)樹,

③ 從uuu號點往上跳,找到可坐車到達的深度最小的節(jié)點rtrtrt,顯然從uuu可坐車到達的點集就是rtrtrt所在的這顆子樹,

④ 由于我們查找的是最小值,所以只需在dfsdfsdfs的過程中,不斷向上更新整顆子樹的最小值即可。

⑤ 直接輸出我們找到的rtrtrt所代表的答案。

#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int head[N], to[N], nex[N], cnt = 1;int head1[N], to1[N], nex1[N], value1[N], cnt1 = 1;int vis[N], dis[N], ff[N], value[N], fa[N][21], ans[N], nn, n, m, Q, K, S;struct Edge {int u, v, w;bool operator < (const Edge &t) const {return w > t.w;} }edge[N];struct Node {int u, w;bool operator < (const Node &t) const {return w > t.w;} };void add1(int x, int y, int w) {to1[cnt1] = y;nex1[cnt1] = head1[x];value1[cnt1] = w;head1[x] = cnt1++; }void add(int x, int y) {to[cnt] = y;nex[cnt] = head[x];head[x] = cnt++; }priority_queue<Node> q;void Dijkstra() {while (q.size()) {q.pop();}q.push({1, 0});memset(vis, 0, sizeof vis), memset(dis, 0x3f, sizeof dis);dis[1] = 0;while (q.size()) {int rt = q.top().u;q.pop();if (vis[rt]) {continue;}vis[rt] = 1;for (int i = head1[rt]; i; i = nex1[i]) {if (dis[to1[i]] > dis[rt] + value1[i]) {dis[to1[i]] = dis[rt] + value1[i];q.push({to1[i], dis[to1[i]]});}}} }int find(int rt) {return ff[rt] == rt ? rt : ff[rt] = find(ff[rt]); }void dfs(int rt, int f) {fa[rt][0] = f, ans[rt] = rt <= n ? dis[rt] : 0x3f3f3f3f;for (int i = 1; i <= 20; i++) {fa[rt][i] = fa[fa[rt][i - 1]][i - 1];}for (int i = head[rt]; i; i = nex[i]) {if (to[i] == f) {continue;}dfs(to[i], rt);ans[rt] = min(ans[rt], ans[to[i]]);} }void kruskal() {for (int i = 1; i < N; i++) {ff[i] = i, head[i] = 0;}cnt = 1;sort(edge + 1, edge + 1 + m);for (int i = 1, cur = 1; i <= m && cur < n; i++) {int u = find(edge[i].u), v = find(edge[i].v);if (u != v) {cur++, nn++;ff[u] = nn, ff[v] = nn;value[nn] = edge[i].w;add(nn, u), add(nn, v);if (u <= n) {value[u] = edge[i].w;}if (v <= n) {value[v] = edge[i].w;}}}dfs(nn, 0); }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int T;scanf("%d", &T);while (T--) {scanf("%d %d", &n, &m);nn = n;memset(head1, 0, sizeof head1), cnt1 = 1;for (int i = 1, u, v, l, a; i <= m; i++) {scanf("%d %d %d %d", &u, &v, &l, &a);add1(u, v, l), add1(v, u, l);edge[i] = {u, v, a};}Dijkstra();kruskal();scanf("%d %d %d", &Q, &K, &S);for (int i = 1, v, p, last_ans = 0; i <= Q; i++) {scanf("%d %d", &v, &p);v = (v + 1ll * K * last_ans - 1) % n + 1, p = (p + 1ll * K * last_ans) % (S + 1);for (int j = 20; j >= 0; j--) {if (fa[v][j] && value[fa[v][j]] > p) {v = fa[v][j];}}last_ans = ans[v];printf("%d\n", last_ans);}}return 0; }

總結(jié)

以上是生活随笔為你收集整理的P4768 [NOI2018] 归程(kruskal 重构树)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一区二区三区福利 | 猛1被调教成公厕尿便失禁网站 | 精品久久久久久亚洲综合网站 | 九九久久综合 | 亲女禁h啪啪宫交 | 午夜精品久久久久久久久久久久久蜜桃 | 亚洲一区在线电影 | 欧美,日韩,国产在线 | 凹凸国产熟女精品视频 | 免费黄色看片 | 大尺度做爰呻吟舌吻情头 | www.超碰在线观看 | 亚洲天堂一| 青青草社区视频 | 欧美大片高清免费观看 | 不卡免费av | 国产激情久久 | 成人做爰69片免费看 | 中文字幕在线观看一区 | 久综合 | 怡红院成人网 | 成人黄色大全 | 91爽爽 | 人人澡超碰碰97碰碰碰 | 女生高潮视频在线观看 | 日本三级久久久 | 亚洲日本三级 | 日韩激情图片 | 在线观看色| 在线午夜 | 国产日韩免费 | 欧美乱妇日本无乱码特黄大片 | 毛片毛片毛片毛片毛片毛片 | 国产精品美女www | 中文字幕乱妇无码av在线 | 久久黄色免费网站 | 婚后打屁股高h1v1调教 | 大胸美女网站 | 不卡视频在线播放 | 日韩欧美一区二区视频 | 成人一区二区在线观看 | 精品久久久久久无码人妻 | 亚洲免费黄色片 | 奇米婷婷 | 国产伦精品一区二区三区视频黑人 | 在线免费观看你懂的 | 黄色网在线看 | 日韩精品无码一区二区三区久久久 | 夜夜cao | 亚洲我不卡 | 麻豆国产尤物av尤物在线观看 | 日本特黄色片 | av55 | 免费高清av在线看 | 国产调教av | 美国av片 | 欧美精品一区二区久久婷婷 | 欧美乱插 | 91资源在线视频 | 日韩欧美日本 | 日本小视频网站 | 久久久久久久国产精品美女 | 色婷婷欧美 | 国产又爽又黄的视频 | 中文字字幕第183页 欧美特级一级片 | 熟女人妻视频 | 久艹av | 黄瓜视频在线免费观看 | 草比网站| 国产不卡视频在线观看 | 91动态图 | 久久精品视频无码 | 超碰人人干人人 | 97精品视频在线观看 | 日韩专区在线观看 | 国产精品久久久久久一区二区 | 伊人三级| 少妇色综合 | 青青操视频在线 | 色屋永久 | 欧美成人精品激情在线观看 | 日韩成人区 | 日韩国产第一页 | 国产精品自在线 | 粉嫩一区 | 美女100%视频免费观看 | 一区二区男女 | 日本免费精品 | 国语久久 | 亚洲成色| 亚洲污视频 | 茄子视频A | 9l视频自拍蝌蚪9l视频 | 欧洲成人综合网 | 手机看片国产1024 | 久操视频免费 | www视频在线观看 | 寡妇av | 成人av毛片 | 搡国产老太xxx网站 高h喷汁呻吟3p |