洛谷 P3906 Geodetic集合
题目大意:
nnn个点mmm条遍的无向图,如果点iii在点uuu到点vvv的最短路径(uuu到vvv的边数最少)上,那么记这些点为集合I(u,v)I(u,v)I(u,v)
有kkk个询问,问集合I(u,v)I(u,v)I(u,v)
解题思路:
每次询问以u为起点跑一遍DijDijDij,将以uuu为起点到其他点的最短路记为dis1dis1dis1,再以vvv为起点跑一遍DijDijDij,记为dis2dis2dis2
∀iϵ[1,n]\forall i\epsilon [1,n]∀iϵ[1,n],若dis1[i]+dis2[i]=dis1[v](dis2[u])dis1[i]+dis2[i]=dis1[v](dis2[u])dis1[i]+dis2[i]=dis1[v](dis2[u])那么iϵI(u,v)i\epsilon I(u,v)iϵI(u,v)
AcceptedcodeAccepted\ codeAccepted code
#include<queue>
#include<cstdio>
#include<algorithm>using namespace std;const int inf = 1e9;struct Line {int to, w, next;
}e[5005];priority_queue < pair<int, int> > q;int n, m, u, v, cnt;
int dis[50][2], vis[50], last[50], a[5005];inline void addline(int x, int y) {e[++cnt] = (Line){y, 1, last[x]}; last[x] = cnt;
}void dij(int S, int nm) {for (int i = 1; i <= n; ++i) dis[i][nm] = inf, vis[i] = 0;dis[S][nm] = 0;while (q.size()) q.pop();q.push(make_pair(0, S));while (q.size()) {int x = q.top().second; q.pop();if (vis[x]) continue;vis[x] = 1;for (int i = last[x]; i; i = e[i].next) {int y = e[i].to;if (dis[y][nm] > dis[x][nm] + e[i].w) {dis[y][nm] = dis[x][nm] + e[i].w;if (!vis[y]) q.push(make_pair(-dis[y][nm], y));}}}return;
}int main() {scanf("%d %d", &n, &m);for (int i = 1, x = 0, y = 0; i <= m; ++i)scanf("%d %d", &x, &y), addline(x, y), addline(y, x);int Q = 0; scanf("%d", &Q);while (Q--) {scanf("%d %d", &u, &v);dij(u, 0); dij(v, 1);for (int i = 1; i <= n; ++i)if (dis[i][0] + dis[i][1] == dis[v][0]) printf("%d ", i);printf("\n");}
}
洛谷 P3906 Geodetic集合相关推荐
- 洛谷——P3906 Geodetic集合
P3906 Geodetic集合 题目描述 图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为 ...
- 洛谷P3906 Geodetic集合解题报告
Geodetic集合 P3906 技术统计 难度 提高+/省选- 用时 30min 提交次数 1 unaccept 次数 0 ac次数 1 题意概括 题干不能再概括了啊啊啊啊 数据范围 n≤40n\l ...
- 洛谷 P3906 Geodetic集合 题解
题目描述 图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些 ...
- P3906 Geodetic集合 最短路的点集
P3906 Geodetic集合 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 把无向边看作长度均为1的有向边然后求最短路即可.但是此题需要把所有最短路上的点放入集合.并随机取两点 ...
- P3906 Geodetic集合
传送门(洛谷) 数据范围:n<=40,故先用floydfloydfloyd跑一遍,然后遍历每一个点(相当于一个中转点),如果起点到这个中转点的距离加上中转点到终点的距离和等于起点到终点的距离,则 ...
- 洛谷题解——P1621 集合
题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...
- 并查集——集合(洛谷 P1621)
题目选自洛谷P1621 一道并查集类型的算法题,基本框架不变,就是合并的时候怎么合并,合并哪些数? 筛出素数之后找出在 'p~b' 范围内的素数 然后枚举a~b之间的数,合并他们 最后看看那些数的祖先 ...
- 洛谷 3784(bzoj 4913) [SDOI2017]遗忘的集合——多项式求ln+MTT
题目:https://www.luogu.org/problemnew/show/P3784 https://www.lydsy.com/JudgeOnline/problem.php?id=4913 ...
- map集合——阅读理解(洛谷 P3879)
题目选自洛谷P3879 直接用map<string,vecotr<int> > 代替这题里的trie树,注意开map的时候后面两个> >之间要有一个空格. 用vec ...
最新文章
- matlab 摄像头拍照,matlab摄像头拍照
- codevs 1085 数字游戏 dp或者暴搜
- nyoj239月老的难题
- LED计数电路,5输入按键编码器,7段数码管显示驱动集成为LED计数测试电路
- pinctrl子系统和gpio子系统
- mysql负变量_MySQL的变量
- 蓝桥杯 ALGO-61 算法训练 奇偶判断
- android uri跳转导航,android:scheme 通过uri跳转到APP应用指定Activity
- Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
- PHP User Agent
- 论MongoDB索引选择的重要性
- 程序员们的薪酬待遇大起底,如何提高自己的收入?
- 交易开拓者-附录二:函数速查
- Wordpress 网站添加打赏插件
- android spinner 取消默认值,令请选择
- 解密国内BAT等大厂前端技术体系-腾讯篇(长文建议收藏)
- 报告:使用加密货币进行跨境汇款的人数越来越多
- CSDN文章如何迁移至微信公众号
- 35岁前成功的黄金法则(12)-十二分努力
- vue百度地图实现路线规划(含途经点)