图
。。。
夜阑優珲
我是真的懒。
展开
-
第K短路径的顶点
题目问题 D: 第K短路径的顶点(DS图)时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 0[提交][状态][讨论版]题目描述给出一个图的邻接矩阵,输入源顶点编号i,用Dijkstra算法求i到其它顶点的最短路径,保存距离i第K短路径的所有顶点编号,并按顶点编号由小到大输出。K从1开始。输入第1行输入t,表示有t个测试实例第2行输入顶点数n 第3行起,每行输入邻接矩阵的一行,以此类推输入n行,其中的数据为:第i个结点与其它结点如果相连则为距离,无连接则为原创 2021-01-04 20:19:51 · 420 阅读 · 0 评论 -
有向无环图上的最长路径(DS图)
题解这题一开始以为可以用dijkstra求解,但是实际上不行。原因在于最短路径问题中有最优子结构,即最短路径的子路径还是最短路径,dijkstra就是利用了这一点,而最长路径问题中没有该子结构。实际上求最长路径是NP-hard问题,但是其有线性时间的解。题目问题 E: 有向无环图上的最长路径(DS图)时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版]题目描述求出下面有向图中,顶点“5”到其他所有顶点的最长路径和长度。输入根据上面原创 2021-01-03 18:09:32 · 3893 阅读 · 1 评论 -
中后序遍历构建二叉树(DS树)
题解题目问题 C: 中后序遍历构建二叉树(DS树)时间限制: 1 Sec 内存限制: 128 MB提交: 4 解决: 4[提交][状态][讨论版]题目描述按中序遍历和后序遍历给出一棵二叉树,求这棵二叉树中叶子节点权值的最小值。输入保证叶子节点的权值各不相同。输入测试数据有多组对于每组测试数据,首先输入一个整数N (1 <= N <= 10000),代表二叉树有N个节点,接下来的一行输入这棵二叉树中序遍历的结果,最后一行输入这棵二叉树后序遍历的结果输入一原创 2021-01-03 10:39:00 · 1355 阅读 · 1 评论 -
DS图-拓扑排序
题目问题 C: DS图-拓扑排序时间限制: 1 Sec 内存限制: 128 MB提交: 202 解决: 63[提交][状态][讨论版]题目描述已知有向图,求它的求拓扑有序序列。拓扑排序算法:给出有向图邻接矩阵1.逐列扫描矩阵,找出所有入度为0的顶点入队列(栈)。2.队列(栈)不空,输出队头(栈顶)元素v,出队(出栈),将v的所有邻接点入度减-。度为0,入队(栈)。重复步骤2,直到队空(栈空)。输入第一行:测试次数t,表示有t个有向图。每组测试数据格式如下:第一行原创 2021-01-02 15:40:54 · 379 阅读 · 0 评论 -
六度空间(queue)
题解这题是无向无权图的最短路径问题,无权图的最短路径用BFS求解就好了,没必要用Dijkstra。题目问题 B: 六度空间(queue)时间限制: 1 Sec 内存限制: 128 MB提交: 122 解决: 67[提交][状态][讨论版]题目描述六度空间理论指出:你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过6个中间人你就能够认识任何一个陌生人。验证这一理论需要大数据量。现在,只需要计算任意两个人通过多少个中间人能互相认识。假设有 n 个人,他们的编号为 1原创 2021-01-02 12:29:21 · 272 阅读 · 0 评论 -
无线网络 (Ver. I)
题解这里的输入为O和输入为S的次数都是由输入控制的,一般这种情况都是cin>>ch作为控制表达式,输入eof结束输入。如果这里给输入为O和输入为S都弄一个这样的循环,则理论上需要输入两次EOF,而实际上输入EOF后会执行后续的程序,但是其中的cin不会执行。这里的解决办法是输入为O和输入为S共用一个while(cin>>ch),先将输入为S时的各种值用队列存起来,之后再一个一个出队使用。题目问题 E: 无线网络 (Ver. I)时间限制: 1 Sec 内存限制: 12原创 2020-12-14 09:44:27 · 222 阅读 · 0 评论 -
关键路径-STL版(待验证)
题解这里求关键路径共用到两个函数TopologicalOrder()和CriticalPath()。前者求出有向图的拓扑有序序列同时按该序列求各顶点的ve值,并将序列存入栈中。后者通过出栈得到逆拓扑有序序列并按其求各顶点vl值。由于ve数组要不断往大更新,所以初始化为0,而vl数组要不断往小更新,所以初始化为ve[vexnum-1]。注意这里不是说ve初始值越小越好或者vl初始值越大越好,这里设为0和ve[vexnum-1]是因为其刚好且一定是ve的最小值和vl的最大值。这里面的拓扑排序“删顶点操作原创 2020-12-12 15:56:53 · 517 阅读 · 0 评论 -
追星(待验证)
题解本题即为无向图的最短路径问题,其和之前的有向图最短路径基本没有区别。题目问题 C: 追星时间限制: 1 Sec 内存限制: 128 MB提交: 998 解决: 251[提交][状态][讨论版]题目描述城市总共有N座。yintama是右京女神的狂热粉,当他得知右京女神将要在城市N举办演唱会的时候,马上开始准备动身前往城市N。原本他可以直接乘飞机直达城市N,然而贫穷使他屈服,他必须选择总花费最少的那条路径。设总共有N座城市(2<=N<=1000),城市编号分别为1,2,3原创 2020-12-11 22:19:05 · 281 阅读 · 0 评论 -
图综合练习--拓扑排序(待验证)
题解题目的意思是:给定一个偏序图,对于其中不存在关系的部分,以顶点编号小到大的方式将其拓扑(补全)为全序图,得到的全序图就可以以一个序列的形式输出。其算法为:(1)在有向图中选一个没有前驱的顶点并输出之。(2)从图中删除该顶点和所有以它为尾的弧。重复上述步骤直到输出所有顶点。拓扑的方式:当(1)中遇到多个无前驱顶点时选取编号小的那个。拓扑排序实际上是AOV网的一个应用,顶点代表活动,边代表的是活动间的优先关系。题目问题 B: 图综合练习--拓扑排序时间限制: 1 Sec 内存限制: 128原创 2020-12-11 20:32:22 · 349 阅读 · 0 评论 -
DS图—图的最短路径(待验证)
题解Dijkstra算法题目问题 A: DS图—图的最短路径(不含代码框架)时间限制: 1 Sec 内存限制: 128 MB提交: 588 解决: 361[提交][状态][讨论版]题目描述给出一个图的邻接矩阵,输入顶点v,用迪杰斯特拉算法求顶点v到其它顶点的最短路径。输入 第一行输入t,表示有t个测试实例第二行输入顶点数n和n个顶点信息第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其它结点如果相连则为距离,无连接则为0,数据之间用空格隔开。第四行原创 2020-12-10 23:47:19 · 472 阅读 · 0 评论 -
图的顶点可达闭包(待验证)
题目问题 D: 图的顶点可达闭包时间限制: 1 Sec 内存限制: 128 MB提交: 545 解决: 270[提交][状态][讨论版]题目描述给定有向图的邻接矩阵A,其元素定义为:若存在顶点i到顶点j的有向边则A[i,j]=1,若没有有向边则A[i,j]= 0。试求A的可达闭包矩阵A*,其元素定义为:若存在顶点i到顶点j的有向路径则A*[i,j]=1,若没有有向路径则A*[i,j]= 0。输入第1行顶点个数n第2行开始的n行有向图的邻接矩阵,元素之间由空格分开输出有向图的可原创 2020-12-10 10:03:47 · 209 阅读 · 0 评论 -
图的应用之——图的连通
题解只要用DFSTraverse或BFSTraverse就好了,,,增加一个计数变量count记录连通分量数。题目问题 C: 图的应用之——图的连通时间限制: 1 Sec 内存限制: 128 MB提交: 601 解决: 301[提交][状态][讨论版]题目描述给定一个图的邻接矩阵,请判断该图是否是连通图。连通图:任意两个顶点之间都有路径。--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若i原创 2020-12-09 22:15:22 · 398 阅读 · 0 评论 -
道路建设 (Ver. I)(待验证)
题目问题 B: 道路建设 (Ver. I)时间限制: 1 Sec 内存限制: 128 MB提交: 1233 解决: 308[提交][状态][讨论版]题目描述有N个村庄,编号从1到N,你应该建造一些道路,使每个村庄都可以相互连接。两个村A和B是相连的,当且仅当A和B之间有一条道路,或者存在一个村C使得在A和C之间有一条道路,并且C和B相连。现在一些村庄之间已经有一些道路,你的任务就是修建一些道路,使所有村庄都连通起来,并且所有道路的长度总和是最小的。输入测试数据有多组第一行是整原创 2020-12-08 23:19:19 · 456 阅读 · 0 评论 -
DS图—最小生成树(待验证)
题解:prim算法中每次都要找一端在U中一端在V-U中的边中权值最小的边。这里U的实现可以通过设置一个visit数组,如果在U里面就置为1,而不是为U重新创建一个顶点集。找权值最小就可以先设置大初值变量minweight,然后遍历所有符合条件的边,如果权值比minweight小就赋给minweight。prim循环结束的条件是U等于V,对应到算法就是visit数组全为1。这里visit数组是否全为1不能作为判断条件直接写进while头,所以可以为这段代码单独开一个isOver函数,然后while头中用原创 2020-12-07 22:57:34 · 353 阅读 · 0 评论 -
DS图—图非0面积(未完成)
题目:问题 F: DS图—图非0面积时间限制: 1 Sec 内存限制: 128 MB提交: 267 解决: 195[提交][状态][讨论版]题目描述编程计算由"1"围成的下列图形的面积。面积计算方法是统计"1"所围成的闭合曲线中"0"点的数目。如图所示,在10*10的二维数组中,"1"围住了15个点,因此面积为15。输入测试次数t每组测试数据格式为:数组大小m,n一个由0和1组成的m*n的二维数组输出对每个二维数组,输出符号"1"围住的"0"的个数,即围成的面积。假原创 2020-12-07 09:26:07 · 462 阅读 · 0 评论 -
DS图—图的连通分量(待验证)
题解:求图的连通分量就是使用深度或者广度优先遍历,用一个变量记录遍历过程中囊括了多少个连通分量就行了。题目:问题 E: DS图—图的连通分量时间限制: 1 Sec 内存限制: 128 MB提交: 495 解决: 317[提交][状态][讨论版]题目描述输入无向图顶点信息和边信息,创建图的邻接矩阵存储结构,计算图的连通分量个数。输入测试次数t每组测试数据格式如下:第一行:顶点数 顶点信息第二行:边数第三行开始,每行一条边信息输出每组测试数据输出,顶点信息和邻原创 2020-12-03 22:28:58 · 264 阅读 · 0 评论 -
DS图遍历--广度优先搜索(待验证)
题目:问题 D: DS图遍历--广度优先搜索时间限制: 1 Sec 内存限制: 128 MB提交: 516 解决: 360[提交][状态][讨论版]题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推输入下一原创 2020-12-03 09:37:25 · 499 阅读 · 0 评论 -
DS图遍历--深度优先搜索(待验证)
题目:问题 C: DS图遍历--深度优先搜索时间限制: 1 Sec 内存限制: 128 MB提交: 544 解决: 342[提交][状态][讨论版]题目描述给出一个图的邻接矩阵,对图进行深度优先搜索,从顶点0开始注意:图n个顶点编号从0到n-1代码框架如下:输入第一行输入t,表示有t个测试实例第二行输入n,表示第1个图有n个结点第三行起,每行输入邻接矩阵的一行,以此类推输入n行第i个结点与其他结点如果相连则为1,无连接则为0,数据之间用空格隔开以此类推原创 2020-11-17 19:17:58 · 522 阅读 · 0 评论 -
图综合练习--构建邻接表
题目:问题 B: 图综合练习--构建邻接表时间限制: 1 Sec 内存限制: 128 MB提交: 367 解决: 302[提交][状态][讨论版]题目描述已知一有向图,构建该图对应的邻接表。邻接表包含数组和单链表两种数据结构,其中每个数组元素也是单链表的头结点,数组元素包含两个属性,属性一是顶点编号info,属性二是指针域next指向与它相连的顶点信息。单链表的每个结点也包含两个属性,属性一是顶点在数组的位置下标,属性二是指针域next指向下一个结点。 输入第1行输入整原创 2020-11-16 19:50:36 · 691 阅读 · 0 评论 -
DS图—图的邻接矩阵存储及度计算
题目:问题 A: DS图—图的邻接矩阵存储及度计算时间限制: 1 Sec 内存限制: 128 MB提交: 558 解决: 292[提交][状态][讨论版]题目描述假设图用邻接矩阵存储。输入图的顶点信息和边信息,完成邻接矩阵的设置,并计算各顶点的入度、出度和度,并输出图中的孤立点(度为0的顶点)--程序要求--若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio程序中若include多过一个头文件,不看代码,作0分处理不允许使用原创 2020-11-16 19:41:17 · 610 阅读 · 0 评论