摘要:
这个广搜有点特殊,它要求输出路径,而不是步数,我们有两种以上的做法,我们可以使用queue类,然后把不用的点都弹出去,我们也可以用数组来模拟队列, 然后只让整数指针做加加操作就行了。我们这样的话,我们每次都记录,前一步是从哪个节点跳过来的,最后找到右下角之后... 阅读全文
摘要:
这题就是稠密图,所以我们就用Prim。然后题中要求的是需要新建的路的最小值,所以已经建成的路,我们直接使用就可以了,把它设置为0,然后走这条路就是最短的。这题还是多组输入输出,所以还是用while循环输入。#include int map[105][105]... 阅读全文
摘要:
这题kruscal跑的好快,嗯,就是一道板子题,很简单。输入的话,输入看着很繁琐,所以就用了cin。#include #include using namespace std;struct Edge { int f, t, c; bool ope... 阅读全文
摘要:
这个就像vector一样,不过有些题可能会卡STL,所以我们就模拟一个vector。head[i]的意思就是以点i为终点的上一条边的编号,edge[i].next就是与边i有着共同出发点的另外一条边的编号,只要照着vector来理解就行了。下面是代码和图示:... 阅读全文
摘要:
这题和以往的求最短路的题目略微有点不一样,以往求的都是最小的,这题求的是大的,而且还是乘法。我们求的时候初始化的时候就要进行相反的初始化了,把它们初始化为0,然后比较大的就更新。因为这题的点少边多,所以spfa会比较好,我们对于每种货币都跑一遍,如果其中任何... 阅读全文
摘要:
这题就是最小生成树Prim,d[]代表的是整个连接集合和未连接点的最小距离。#include int map[105][105];int vis[105], d[105];const int INF = 0x3f3f3f3f;int n,ans;void P... 阅读全文
摘要:
这题就是kruscal,我们最后判断一下是否连通就行了。直接看pre数组,里面有根节点,超过一个就说明不连通,输出问号就可以了。#include #include using namespace std;int pre[110], res, m, n;str... 阅读全文
摘要:
这是一道简单的深搜题目,题意说的是给一个5*5的棋盘,里面填满数字,然后跳到一个格子上,这是第一步,接着向上下左右四个方向任意一个方向走一步,一共走6步,问我们走过的数字组成的一个6位数有多少种不同的方案。那这就是一个集合嘛,集合中没有相同的元素,直接输出集... 阅读全文
摘要:
这里参考了一位大神的代码,写法很简洁,思路其实就是这样,学过先中后序遍历的人,基本上都能看懂。每次进入递归程序之后,就找到根节点,然后把左子树传给递归程序,然后把右子树传给子递归程序,然后输出这个根节点。#include #include using nam... 阅读全文
摘要:
我们读入的时候,要考虑重边的问题,我们只取边的最小值就可以了。#include #include const int INF = 0x3f3f3f3f;int map[105][105];int n,m;int min(int x,int y){ re... 阅读全文