题目大意:

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集合相关推荐

  1. 洛谷——P3906 Geodetic集合

    P3906 Geodetic集合 题目描述 图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为 ...

  2. 洛谷P3906 Geodetic集合解题报告

    Geodetic集合 P3906 技术统计 难度 提高+/省选- 用时 30min 提交次数 1 unaccept 次数 0 ac次数 1 题意概括 题干不能再概括了啊啊啊啊 数据范围 n≤40n\l ...

  3. 洛谷 P3906 Geodetic集合 题解

    题目描述 图G是一个无向连通图,没有自环,并且两点之间至多只有一条边.我们定义顶点v,u最短路径就是从v到u经过边最少的路径.所有包含在v-u的最短路径上的顶点被称为v-u的Geodetic顶点,这些 ...

  4. P3906 Geodetic集合 最短路的点集

    P3906 Geodetic集合 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 把无向边看作长度均为1的有向边然后求最短路即可.但是此题需要把所有最短路上的点放入集合.并随机取两点 ...

  5. P3906 Geodetic集合

    传送门(洛谷) 数据范围:n<=40,故先用floydfloydfloyd跑一遍,然后遍历每一个点(相当于一个中转点),如果起点到这个中转点的距离加上中转点到终点的距离和等于起点到终点的距离,则 ...

  6. 洛谷题解——P1621 集合

    题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...

  7. 并查集——集合(洛谷 P1621)

    题目选自洛谷P1621 一道并查集类型的算法题,基本框架不变,就是合并的时候怎么合并,合并哪些数? 筛出素数之后找出在 'p~b' 范围内的素数 然后枚举a~b之间的数,合并他们 最后看看那些数的祖先 ...

  8. 洛谷 3784(bzoj 4913) [SDOI2017]遗忘的集合——多项式求ln+MTT

    题目:https://www.luogu.org/problemnew/show/P3784 https://www.lydsy.com/JudgeOnline/problem.php?id=4913 ...

  9. map集合——阅读理解(洛谷 P3879)

    题目选自洛谷P3879 直接用map<string,vecotr<int> > 代替这题里的trie树,注意开map的时候后面两个> >之间要有一个空格. 用vec ...

最新文章

  1. matlab 摄像头拍照,matlab摄像头拍照
  2. codevs 1085 数字游戏 dp或者暴搜
  3. nyoj239月老的难题
  4. LED计数电路,5输入按键编码器,7段数码管显示驱动集成为LED计数测试电路
  5. pinctrl子系统和gpio子系统
  6. mysql负变量_MySQL的变量
  7. 蓝桥杯 ALGO-61 算法训练 奇偶判断
  8. android uri跳转导航,android:scheme 通过uri跳转到APP应用指定Activity
  9. Python3.5 学习八 附加知识点 paramiko和rsa非对称秘钥的适用
  10. PHP User Agent
  11. 论MongoDB索引选择的重要性
  12. 程序员们的薪酬待遇大起底,如何提高自己的收入?
  13. 交易开拓者-附录二:函数速查
  14. Wordpress 网站添加打赏插件
  15. android spinner 取消默认值,令请选择
  16. 解密国内BAT等大厂前端技术体系-腾讯篇(长文建议收藏)
  17. 报告:使用加密货币进行跨境汇款的人数越来越多
  18. CSDN文章如何迁移至微信公众号
  19. 35岁前成功的黄金法则(12)-十二分努力
  20. vue百度地图实现路线规划(含途经点)

热门文章

  1. Altera Max10系列FPGA简介
  2. VMware esxcli定时开启虚拟机、维护开机状态
  3. 美图数据总监:Facebook的法宝,我们在产品中怎么用?
  4. package.json文件中的main属性使用
  5. 办公室搬迁的注意事项.办公室文件的整理和打包方法有哪些
  6. 如何从 FastReport VCL 中将报表导出为PNG格式?
  7. 山外论坛每日一贴的学习
  8. 智慧水库水位库容监测系统解决方案
  9. Serverless,实现 IoT 设备运行状态缓存到Redis方案
  10. Hadoop学习篇(一)——初识Hadoop Hadoop单机配置