Frogger题目解析
注意:这是一种新的方法!!!!!
。。\
。 ∪
使用方法:qsort快排
1.快排
我们需要分析一下我们需要使用到什么头函数
#include <cstdio>
#include <cstring>
#include <cmath>
分析快排
定义:data数组
然后,我们就可以快排啦!ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘
struct node{
int x,y,z;
};
我们的思想是,先清零
之后,我们需要先读入,输出,然后再循环判断,然后回!
node data[110];
void qsort(int l,int r){
int i=l;int j=r;
int x=(l+r)/2;
while(i<=j){
while(data[i].x<data[i].x or data[j].x==data[i].x) ++i;
while(data[j].x<data[i].x or data[j].x==data[i].x) --j;
if(i<=j){
int cl=data[i].x;data[i].x=data[j].x;data[j].x=cl;
int cs=data[i].y;data[i].y=data[j].y;data[j].y=cs;
++i;--j;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
return ;
}
第一步:读入
很简单了啦!
scanf("%d%d",&m,&n);
int num=0;
对了,还有清零msdk!
第二步:管理矩阵
之前,我们需要科普一下:
Dijkstra算法无法判断含负权边的图的最短路。如果遇到负权,在没有负权回路(回路的权值和为负,即便有负权的边)存在时,也可以采用Bellman - Ford算法正确求出最短路径。
Bellman-Ford算法能在更普遍的情况下(存在负权边)解决单源点最短路径问题。对于给定的带权(有向或无向)图 G=(V,E), 其源点为s,加权函数 w是 边集 E 的映射。对图G运行Bellman - Ford算法的结果是一个布尔值,表明图中是否存在着一个从源点s可达的负权回路。若不存在这样的回路,算法将给出从源点s到 图G的任意顶点v的最短路径d[v]。
Begin
我们需要用的是连接矩阵,很常用,可以看我上次的文章
题意分析
任务
- 求n-1的最短路
输入
- n条边,n个节点
- 输出
输出
- 1-n的最短路
算法分析
单源最短路
- 从一个点出发到各个节点的最短路
- 以及我们需要找到的路。。
- 以及我们需要找到的路。。
我们接下来就要结束啦!
所有代码在这里
#include
#include
#include
int c[110],a[110],b[110],n,lll;
int x,y,c1,c2;
struct node{
int x,y,z;
};
node data[110];
void qsort(int l,int r){
int i=l;int j=r;
int x=(l+r)/2;
while(i<=j){
while(data[i].x