上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 57 下一页

2011年7月17日

Dijkstra算法之四----优先队列实现Dijkstra算法

摘要: //优先队列实现Dijstra 算法#include <iostream> #include<queue>using namespace std; #define inf 0x7fffffff //inf表示无穷大 int Vertex,edge[1000][1000],distD[1000],i,j;typedef pair<int,int> ele;void init(){ for(i=1;i<=Vertex;i++) //结点坐标都是从1开始的 for(j=1;j<=Vertex;j++) { if(i==j) edge[i][j]=0; 阅读全文

posted @ 2011-07-17 01:46 sysu_mjc 阅读(1341) 评论(0) 推荐(0) 编辑

Dijkstra算法之三

摘要: #include <iostream> //poj 1502 MPI Maelstrom#include<string>using namespace std; const int MaxWeight=INT_MAX; //MaxWeight表示无穷大int Vertex,edge[102][102],distD[102],i,j;void init(){ cin>>Vertex; for(i=1;i<=Vertex;i++) for(j=1;j<=Vertex;j++) { if(i==j) edge[i][j]=0; else edge[i] 阅读全文

posted @ 2011-07-17 01:45 sysu_mjc 阅读(217) 评论(0) 推荐(0) 编辑

Dijkstra算法之二

摘要: //sicily 1321. Robot#include<iostream> //Dijkstra算法using namespace std;#define MaxWeight 99999int table[110][110],S[10010],dist[10010]; //S[]记录是否访问过,dist[]记录各点到起点的最短距离int move[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int main(){ int cases,m,n,x1,y1,x2,y2,i,j; cin>>cases; while(cases--) { cin> 阅读全文

posted @ 2011-07-17 01:44 sysu_mjc 阅读(147) 评论(0) 推荐(0) 编辑

Dijkstra算法之一

摘要: #include <iostream> //单源顶点最短路径:迪杰斯特拉(Dijkstra)算法using namespace std; const int MaxWeight=100000; //MaxWeight表示无穷大int Vertex,edge[1000][1000],distD[1000],i,j;void init(){ for(i=1;i<=Vertex;i++) //结点坐标都是从1开始的 for(j=1;j<=Vertex;j++) { if(i==j) edge[i][j]=0; else edge[i][j]=MaxWeight; }}void 阅读全文

posted @ 2011-07-17 01:43 sysu_mjc 阅读(189) 评论(0) 推荐(0) 编辑

Prim算法之一

摘要: #include<iostream> //最小生成树prim算法using namespace std;const int max_ve=1005,max_ed=15005,MaxWeight=INT_MAX;int n,m,edge[max_ve][max_ve],sum; //n,m分别记录顶点数和边数struct MST //最小生成树的边{ int begin,end,weight;}mst[max_ve];void Prim(){ int min,v,com,i,j,k; for(i=0;i<n-1;i++) //对mst进行初始化,顶点下标从0开始 { mst[i 阅读全文

posted @ 2011-07-17 01:42 sysu_mjc 阅读(164) 评论(0) 推荐(0) 编辑

Prim算法之二

摘要: //sicily 1090. Highways#include<iostream> //最小生成树 Prim算法using namespace std;struct MST //最小生成树的边{ int st,ed,w;}mst[1000];int n,len,edge[1000][1000];void Prim(){ int i,j,k; for(i=0;i<n-1;i++) //默认选择第1个节点加入生成树 { mst[i].st=0;mst[i].ed=i+1; mst[i].w=edge[0][i+1]; } for(i=0;i<n-1;++i) //求n-1条 阅读全文

posted @ 2011-07-17 01:42 sysu_mjc 阅读(178) 评论(0) 推荐(0) 编辑

基于并查集的kruskal算法

摘要: #include <iostream> //并查集的kruskal算法using namespace std;const int max_ve=1005,max_ed=15005;int n,m,i; //n,m分别记录顶点数和边数struct node{ int par,ans;}vertex[max_ve]; //顶点struct Edge { int u,v,weigh;}edge[max_ed]; //边int cmp(const void* a,const void* b){ return (*(Edge*)a).weigh-(*(Edge*)b).weigh;}int 阅读全文

posted @ 2011-07-17 01:41 sysu_mjc 阅读(300) 评论(0) 推荐(0) 编辑

网络流 EK增广路算法之二

摘要: //多源多汇网络流//poj 1459 Power Network #include<iostream> //参考poj8 1273 Drainage Ditches#include<queue>using namespace std;#define inf 0x7fffffffint flow[102][102],cap[102][102],a[102],p[102],s,t,f;int n,np,nc,m,u,v,z;void ek(){ queue<int> col; memset(flow,0,sizeof(flow)); f=0; while(1) 阅读全文

posted @ 2011-07-17 01:36 sysu_mjc 阅读(190) 评论(0) 推荐(0) 编辑

网络流 EK增广路算法之一

摘要: //poj 1273 Drainage Ditches#include<iostream> //Edmonds-Karp算法#include<queue>using namespace std;#define inf 0x7fffffffint flow[202][202],cap[202][202],a[202],p[202],s,t,f; //s,t为源点和汇点,f保存s-t最大流的流量//cap记录容量限制,flow记录当前的流量//a[i]记录s-i路径上的最小残余容量(边的容量与当前流量之差)//p[i]=u,记录s-t增广路径上结点i的前驱结点是uint m 阅读全文

posted @ 2011-07-17 01:34 sysu_mjc 阅读(311) 评论(0) 推荐(0) 编辑

双向链表

摘要: //sicily 1934 移动小球//刘汝佳的《算法竞赛入门经典》P95#include<iostream> //双向链表,强调小球之间的相对顺序,而非绝对顺序 using namespace std;int l[500010],r[500010]; //l[i],r[i]分别记录编号i的小球的左边left和右边right的小球编号void link(int x,int y) //x,y成为邻居,即 right[x]=y;left[y]=x, x在y左边{ r[x]=y;l[y]=x;}int main(){ int t,n,m,tag,x,y; cin>>t; wh 阅读全文

posted @ 2011-07-17 01:33 sysu_mjc 阅读(188) 评论(0) 推荐(0) 编辑

上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 57 下一页

导航