随笔分类 -  算法---最短路径

摘要:/* 题意:给出一个图,求源点到其他各个点之和 加上 其他各个点到源点之和的最小值 思路:SPFA, 建两个表,顺序不说, 逆序的情况:在初始化的时候在反向保存另一相同表 即: 1 ---> 2 13 反向后:2 ---> 1 13 要求各点到源点的距离和,即求源点到各点的距离和 所以,处理好后,只要求两次源点到各点距离和相加即可 精髓:静... 阅读全文
posted @ 2011-01-19 18:16 kfinder 阅读(482) 评论(0) 推荐(0)
摘要:for(i=0;iq;i++) { scanf("%d",&a); if(a) { scanf("%d %d",&b,&c); if(!visit[b]||!visit[c]) { printf("ERROR! At path %d to %d\n",b,c); } else { if(edges[b][c]==Max) printf("No such path\n"); else printf("%d\n",edges[b][c]); } } else { scanf("% 阅读全文
posted @ 2010-11-21 11:29 kfinder 阅读(351) 评论(0) 推荐(0)
摘要:/* 此题纯属套模板 调用时,初始结点s,目标结点e,则 SPFA(s); cout #include int d[1002],n,m; int edges[1005][1005]; int queue[1000001]; #define MAX 999999999 #define N 1001 /* int SPFA(int s) { int i; bool visit... 阅读全文
posted @ 2010-11-20 22:27 kfinder 阅读(2156) 评论(0) 推荐(0)
摘要:#define N 1002 #define MAX 99999 int edges[N][N],d[N],n; void dijkstra(int v) { int i,j; bool s[N]={false}; for(i=1;i<=n;i++) d[i]=edges[v][i]; d[v... 阅读全文
posted @ 2010-11-20 18:00 kfinder 阅读(598) 评论(0) 推荐(0)
摘要:void SPFA(int s) { for(int i=1;id[u]+ edges[u][i]) { d[i]= d[u]+edges[u][i]; //path[i] = u; if( !visit[i] ) { visit[i... 阅读全文
posted @ 2010-11-20 17:49 kfinder 阅读(628) 评论(0) 推荐(0)