最短路算法众多有floyd、dij、bell-man、spfa,速度最快就是dij+优先队列或者dij+堆排序,spfa理论上很快o(ke)但实际并不一定不过spfa传说中有一个很NB用处就是处理带负权回路。
邻接表VS邻接矩阵:根据写题经验,如果可以用矩阵那一定是首选,矩阵速度比表快而且题目出现多重边时矩阵很好解决。
最短路:
拓扑排序:
最短路模版(复杂度O(nlogn))dij+优先队列:
HDU1690
#include<stdio.h>
#include<queue>
#include<string.h>
#define inf 10000000000000
using namespace std;
__int64 mp[101][101];
__int64 d[101];
bool hash[101];
__int64 a[101];
__int64 l1,l2,l3,l4,c1,c2,c3,c4;
__int64 n,m;
__int64 start,end;
typedef struct node
{
}node,*pnode;
typedef struct Heap
{
}Heap;
priority_queue<Heap>Q;
__int64 bfs()
{
}
int judge(int dis)
{
}
int main()
{
}
SPFA模版:
HDU1874
#define MAX 999999999
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;
int n,m,mp[1001][1001],d[1001];
bool visit[201];
void init()
{
}
void spfa(int s)
{
}
int main()
{
}
HDU3342(拓扑排序模版)
#include<stdio.h>
#include<string.h>
#include<set>
using namespace std;
struct khp
{
};
khp y[101];
bool final[101];
int n,m;
bool topu()
{
}
int main()
{
}