P3906 Geodetic集合

题目描述

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

我们称集合I(v, u)为一个Geodetic集合。

例如下图中,I(2, 5)={2, 3, 4, 5},I(1, 5)={1, 3, 5},I(2, 4)={2, 4}。

给定一个图G和若干点对v,u,请你分别求出I(v, u)。

输入输出格式

输入格式:

输入文件geo.in,第一行为两个整数n,m,分别表示图G的顶点数和边数(顶点编号1-n,n≤40)。下接m行,每行两个整数a,b表示顶点a和b之间有一条无向边。

第m+2行有一个整数k,表示给定的点对数。下接k行,每行两个整数v,u。。

输出格式:

输出文件geo.out,共k行,每行对应输入文件中每一个点对v,u,按顶点编号升序输出I(v, u)。同一行的每个数之间用空格分隔。

输入输出样例

输入样例#1: 复制

5 6
1 2
1 3
2 3
2 4
3 5
4 5
3
2 5
5 1
2 4

输出样例#1: 复制

2 3 4 5
1 3 5
2 4

解题报告:

题目大意:给你一个无向连通图,询问两点之间最短路径上的点

spfa 跑最短路,记录到达每个节点最短路径上的的前驱即可,不过前驱可能有好几个,vector<int>G[N]存储即可

此题有个坑点,一定要去重!!!

#include<bits/stdc++.h>#define N 101001
using namespace std;int n,m,head[N],tot;
bool pvis[N];
struct nod {int to,next;
} e[N];
void add(int u,int v) {e[++tot].to=v,e[tot].next=head[u],head[u]=tot;
}int q,d[N];
bool vis[N];
queue<int>Q;
vector<int>G[50];
void spfa(int x) {while(!Q.empty()) Q.pop();Q.push(x);for(int i=1; i<=n; i++) G[i].clear();memset(vis,0,sizeof(vis));memset(d,0x3f,sizeof(d));vis[x]=1,d[x]=0;while(!Q.empty()) {int u=Q.front();Q.pop();vis[u]=0;for(int i=head[u]; i; i=e[i].next) {int v=e[i].to;if(d[v]>d[u]+1) {d[v]=d[u]+1;if(!vis[v]) {G[v].clear();G[v].push_back(u);Q.push(v);vis[v]=1;}} else if(d[v]==d[u]+1) {G[v].push_back(u);}}}
}
int an[N],tpt;
void dg(int u,int a) {int sz=G[u].size();an[++tpt]=u;for(int i=0; i<sz; i++) {int v=G[u][i];if(v==a) continue;dg(v,a);}
}int main() {scanf("%d%d",&n,&m);for(int a,b,i=1; i<=m; i++) {scanf("%d%d",&a,&b);add(a,b),add(b,a);}scanf("%d",&q);for(int a,b,i=1; i<=q; i++) {scanf("%d%d",&a,&b);
//        memset(pvis,0,sizeof(pvis));
        spfa(a);memset(an,0,sizeof(an));tpt=0;dg(b,a);an[++tpt]=a;sort(an+1,an+1+tpt);for(int j=1; j<=tpt; j++){if(an[j]!=an[j+1]) printf("%d ",an[j]);}puts("");}return 0;
}

转载于:https://www.cnblogs.com/song-/p/9545227.html

洛谷——P3906 Geodetic集合相关推荐

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

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

  2. 洛谷 P3906 Geodetic集合 题解

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

  3. 洛谷 P3906 Geodetic集合

    题目大意: nnn个点mmm条遍的无向图,如果点iii在点uuu到点vvv的最短路径(uuu到vvv的边数最少)上,那么记这些点为集合I(u,v)I(u,v)I(u,v) 有kkk个询问,问集合I(u ...

  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. ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider
  2. 全球及中国无菌粉末注射用橡胶塞行业运营模式分析及产销需求预测报告2021年版
  3. 每日一笑 | 一些关于集合的知识
  4. mysql 日志同步 数据不同步_Mysql互为主从问题--日志同步数据不同步
  5. Running Trinity in multiple steps
  6. Win-MASM64汇编语言-LEA指令
  7. WebRequest msdn整理
  8. python能做什么-学Python能做什么?
  9. redis下key的过期时间详解
  10. L2-004 搜索树判断 (25 point(s))
  11. JS动态呈现还可以输入字数
  12. IntelliJ IDEA 2018 破解版下载安装
  13. 如何下载m3u8格式视频
  14. 厚积而薄发-2015年终总结
  15. 数组中元素与字节的关系
  16. B02 - 025、使用Hive配置mysql作为元数据库
  17. 吐血实践-TiDB离线安装
  18. 【学术】参考文献管理
  19. Mac重装系统出错的心路历程
  20. Ubuntu安装及常用软件安装

热门文章

  1. CRISP-DM(跨行业数据挖掘标准流程…
  2. 好不容易弄好了google app engine ,想不到不能用了。只好去安装sina app engine
  3. (转载)45岁以后,外企的人都到去哪里了呢?
  4. IT项目管理 第九章 习题
  5. 常用计算机操作技巧与方法ppt,这15种PPT技巧,简单易学,却让你事半功倍,相见恨晚!...
  6. [012量化交易] python 最高价 最低价
  7. pytorch训练的pt模型转换为onnx(nn.DataParallel()、model、model.state_dict())
  8. IBM X3850 X5 安装 windows 2008 enterprise 32
  9. 小傻蛋的妹妹跟随小甲鱼学习Python的第十七节017
  10. 汽车配件小程序开发制作