![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《数据结构》6 图论
数据结构与算法
鹏不是这个朋
本 sdut 硕 szu
展开
-
N - New Game(DFS+剪枝)
Description New game是在一个M*M的特殊棋盘(棋盘的第i行都标上了数字i)上进行的新式游戏。给定一个数字N,要求选手把一个棋子从左上角(1,1)移到右下角(M,M),移动时只能往右或往下。要求移动后经过的数字和为N,且拐弯的次数最少。 如果对给出的N,选手不能找出移动方案使得经过的数字和为N或找出的路径拐弯次数不是最少,选手就输了。所以,选手一定千方百计要找出满足条件的路径!! Input 两个正整数M,N(其中M<=16),数据保证有解。 Output 最少拐弯数。 Sample原创 2020-11-28 15:08:50 · 84 阅读 · 0 评论 -
魔戒(BFS+四维数组)
Description 蓝色空间号和万有引力号进入了四维水洼,发现了四维物体–魔戒。 这里我们把飞船和魔戒都抽象为四维空间中的一个点,分别标为 “S” 和 “E”。空间中可能存在障碍物,标为 “#”,其他为可以通过的位置。 现在他们想要尽快到达魔戒进行探索,你能帮他们算出最小时间是最少吗?我们认为飞船每秒只能沿某个坐标轴方向移动一个单位,且不能越出四维空间。 Input 输入数据有多组(数据组数不超过 30),到 EOF 结束。 每组输入 4 个数 x, y, z, w 代表四维空间的尺寸(1 <=原创 2020-11-28 14:45:01 · 243 阅读 · 0 评论 -
L - 病毒扩散(暴力)
Description 2019-ncov的突然出现扰乱了人们的日常生活,它具有极强的传染性,可以快速的在人群中扩散,现在研究人员正在模拟其在人群中的扩散情况. 在一个n*m矩阵所示的人群中,*为普通人,#为佩戴口罩的人,@为病毒携带者,已知每秒每位病毒携带者会将病毒传染给相邻八个方向的未戴口罩的普通人。请问 x 秒后会有多少名传染者(初始为第0秒)? Input 第一行输入空格分隔的三个数n,m,x代表n行,m列的空间,x秒(n,m<=1000)。 接下来n行每行m人如上述所示。 Output 一个原创 2020-11-28 11:21:41 · 165 阅读 · 0 评论 -
K - 老鼠走迷宫(DFS)
Description 现在一只老鼠被困在了迷宫里!你需要判断老鼠能否走出迷宫。 老鼠只能向上下左右四个方向移动。我们认为只要老鼠走到了迷宫的边界即算走出迷宫。 Input 第一行输入两个整数 n, m (1⩽n,m⩽100) 表示迷宫地图的尺寸。 接下来输入 n 行,每行 m 个字符,表示迷宫地图。其中 M 表示老鼠的位置,* 代表墙壁,. 代表空地。 Output 如果老鼠可以走出迷宫,则输出一行 Yes,否则输出一行 No。 Sample Input 4 4 *.** *..* *.M* ****原创 2020-11-28 10:35:11 · 380 阅读 · 1 评论 -
数据结构实验之图论十:判断给定图是否存在合法拓扑序列
Description 给定一个有向图,判断该有向图是否存在一个合法的拓扑序列。 Input 输入包含多组,每组格式如下。 第一行包含两个整数n,m,分别代表该有向图的顶点数和边数。(n<=10) 后面m行每行两个整数a b,表示从a到b有一条有向边。 Output 若给定有向图存在合法拓扑序列,则输出YES;否则输出NO。 Sample Input 1 0 2 2 1 2 2 1 Output YES NO Tip: ...原创 2020-11-28 10:16:11 · 140 阅读 · 0 评论 -
啊哈算法中的Dijkstra最短路算法(好理解!!!)
tip:需要电子书的小伙伴可以留言或者私信哦~~ 模板: #include <stdio.h> int main() { int e[10][10],dis[10],book[10],i,j,n,m,t1,t2,t3,u,v,min; int inf=99999999; //用inf(infinity的缩写)存储一个我们认为的正无穷值 //读入n和m,n表示顶点个数,m表示边的条数 scanf("%d %d",&n,&m);原创 2020-11-27 16:51:26 · 247 阅读 · 1 评论 -
数据结构实验之图论七:驴友计划(最短路Floyd/Dijkstra)
Description 做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。 Input 连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息原创 2020-11-20 15:22:51 · 165 阅读 · 0 评论 -
数据结构实验之图论八:欧拉回路
Description 在哥尼斯堡的一个公园里,有七座桥将普雷格尔河中两个岛及岛与河岸连接起来。 能否走过这样的七座桥,并且每桥只走一次?瑞士数学家欧拉最终解决了这个问题并由此创立了拓扑学。欧拉通过对七桥问题的研究,不仅圆满地回答了哥尼斯堡七桥问题,并证明了更为广泛的有关一笔画的三条结论,人们通常称之为欧拉定理。对于一个连通图,通常把从某结点出发一笔画成所经过的路线叫做欧拉路。人们又通常把一笔画成回到出发点的欧拉路叫做欧拉回路。具有欧拉回路的图叫做欧拉图。 你的任务是:对于给定的一组无向图数据,判断其是否原创 2020-11-20 14:42:53 · 210 阅读 · 0 评论 -
数据结构实验之图论九:最小生成树(Prim/Kruskal)
Description 有n个城市,其中有些城市之间可以修建公路,修建不同的公路费用是不同的。现在我们想知道,最少花多少钱修公路可以将所有的城市连在一起,使在任意一城市出发,可以到达其他任意的城市。 Input 输入包含多组数据,格式如下。 第一行包括两个整数n m,代表城市个数和可以修建的公路个数。(n <= 100, m <=10000) 剩下m行每行3个非负整数a b c,代表城市a 和城市b之间可以修建一条公路,代价为c(城市编号从1到n)。 Output 每组输出占一行,仅输出最小花费原创 2020-11-19 21:36:13 · 320 阅读 · 0 评论 -
数据结构实验之图论六:村村通公路(最小生成树Prim/Kruskal)
Description 当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。 Input 连续多组数据输入,每组数据包括村落数目N(N <= 1000)和可供选择的道路数目M(M <= 3000),随后M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个村庄的编号和修建该道路的预算成本,村庄从1~N编号。 O原创 2020-11-19 20:58:01 · 693 阅读 · 0 评论 -
数据结构实验之图论五:从起始点到目标点的最短步数(BFS)
Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1…n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击;如果可以的话,最少需要经过多少通道。由于n的值比较大(n<=1000),于是巫妖王找到了擅长编程的原创 2020-11-19 20:17:12 · 108 阅读 · 0 评论 -
数据结构实验之图论四:迷宫探索
Description 有一个地下迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关;请问如何从某个起点开始在迷宫中点亮所有的灯并回到起点? Input 连续T组数据输入,每组数据第一行给出三个正整数,分别表示地下迷宫的结点数N(1 < N <= 1000)、边数M(M <= 3000)和起始结点编号S,随后M行对应M条边,每行给出一对正整数,表示一条边相关联的两个顶点的编号。 Output 若可以点亮所有结点的灯,则输出从S开始并以S结束的序列,序列中相邻的原创 2020-11-18 22:17:13 · 232 阅读 · 0 评论 -
数据结构实验之图论三:判断可达性(dfs/bfs)
Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1…n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河。但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是否可以通过隘口及其相关通道到达近卫军团展开攻击。由于n的值比较大(n<=1000),于是巫妖王找到了擅长编程的你 =_=,请你帮他解决这个问题,否原创 2020-11-18 21:24:31 · 308 阅读 · 0 评论 -
数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
Description 给定一个无向连通图,顶点编号从0到n-1,用广度优先搜索(BFS)遍历,输出从某个顶点出发的遍历序列。(同一个结点的同层邻接点,节点编号小的优先遍历) Input 输入第一行为整数n(0< n <100),表示数据的组数。 对于每组数据,第一行是三个整数k,m,t(0<k<100,0<m<(k-1)*k/2,0< t<k),表示有m条边,k个顶点,t为遍历的起始顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。 Output 输出有n行,原创 2020-11-18 15:44:59 · 466 阅读 · 0 评论 -
数据结构实验之图论二:图的深度遍历(DFS)
Description 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出。遍历时,先遍历节点编号小的。 Input 输入第一行为整数n(0 < n < 100),表示数据的组数。 对于每组数据,第一行是两个整数k,m(0 < k < 100,0 < m < k*k),表示有m条边,k个顶点。 下面的m行,每行是空格隔开的两个整数u,v,表示一条连接u,v顶点的无向边。 Output 输出有n行,对应n组输出,每行为用空格隔开的k个整数,对应一组数据,表示DFS的遍历结果原创 2020-11-18 15:28:43 · 299 阅读 · 0 评论