- 博客(9)
- 收藏
- 关注
原创 最短路径spfa算法模板
#include#include#includeusing namespace std;#define INF 1000000#define N 110struct ArcNode{ int to; int weight; ArcNode *next;};queueQ;int n;ArcNode* List[N];int inq[N];int dis[N];voi
2013-08-16 16:59:27 294
原创 最短路径bellman-ford算法模板
#includeusing namespace std;#define N 110#define INF 1000000int map[N][N];int dis[N];int n;void bellman(int start){ for(int i=0;i<n;i++) dis[i]=map[start][i]; for(int k=2;k<n;k++) { for(i
2013-08-16 15:28:20 386
原创 二分图最大匹配
#include#includeusing namespace std;#define N 510int map[N][N];int state[N];int match[N];int n,m;bool dfs(int x){ for(int i=1;i<=m;i++) { if(state[i]==0&&map[x][i]==1) { state[i]=tru
2013-08-12 20:32:10 250
原创 最短路径Floyd算法模板
/*Floyd:利用三个循环扫map[i][j]中是否存在中间节点k,能使map[i][j] 这样,如果i与j存在最短路径,那么必然是i->k1->k2->......->km->j;这样中间的k的可能性在三循环中都扫了一遍。新的map[i][j]就表示i到j的最短路径了*/#include#include#includeusing namespace
2013-07-25 23:07:41 313
原创 最短路径Dijkstra算法模板
/*Dijkstra:和Prim一样思路,就是条件不再是当前最短,而是当前到start点最短,加上dis[i]=map[j][i]+dis[j]*/#includeusing namespace std;#define N 101int map[N][N];int state[N];int n;int Dijkstra(int start,int end)
2013-07-25 22:48:34 399
原创 最小生成树Prim算法模板
/*Prim:利用dis[]来记录已选点集中到各点的最短距离,一开始用起始点到各点的距离初始化dis[]while->知道全部点都走到for->找dis[]中最小边,添加长度,添加点进已选点集for->利用刚添加进来的点到各点的距离,更新dis[]*/#includeusing namespace std;#define N 28int map[N][N];
2013-07-25 17:17:52 280
原创 最小生成树Kruskal算法模板
/*利用数组fa[]来记录各个节点的父节点,初始化为自己通过sort排序,从边长最短到最长for->边长判断->如果边的两个端点的父节点不相同,可选->把选过的边的两端点中,大序号的父节点处理为小序号的父节点*/#include#includeusing namespace std;#define N 28int fa[N];struct point
2013-07-24 10:53:30 288
原创 bfs模板
#include#include#includeusing namespace std;struct point{int x,y;};int map[5][5];stackS;point father[5][5];int state[5][5];int dis[4][2]={0,1,0,-1,1,0,-1,0};bool InMap(point
2013-07-23 16:27:26 236
原创 DFS模板
void dfs(int i,int j){map[i][j]='x';if(i-1>=0&&map[i-1][j]=='.'){dfs(i-1,j);}if(i+1{dfs(i+1,j);}if(j-1>=0&&map[i][j-1]=='.'){dfs(i,j-1);}if(j+1{dfs(i,j+1);}}
2013-07-22 14:19:52 300
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人