AOJ2249Contest Page(最短路径spfa)
来源:互联网 发布:西游之路坐骑进阶数据 编辑:程序博客网 时间:2024/06/01 13:42
或说博主每次都会发现别人没发现的问题,然后一直卡死。。。。。
这是一道求最短路问题的同时,顺便把此时的最小花费求一下,重点是最短路相等的时候,不能再最短路相的地方直接同时求花费,而要单列出来求,那就是直接spfa,然后顺便加一下就ok了,代码如下
#include <iostream>#include <stdio.h>#include <queue>#include <string.h>using namespace std;const int INF=0x3f3f3f3f;const int maxm=20005;const int maxn=10005;struct EdgeNode{ int to; int w; int d; int next;};EdgeNode edges[maxn*maxn];//这里要注意int n,m;int head[maxn],edge;bool vis[maxn];queue<int>que;long long dis[maxn],cost[maxn];void add(int u,int v,int d,int c){ edges[edge].w=c; edges[edge].d=d; edges[edge].to=v; edges[edge].next=head[u]; head[u]=edge++;}void init(){ memset(head,-1,sizeof(head)); edge=0;}int spfa(int n){ int u,sum2=0; dis[0]=0; cost[0]=0; for(int i=1; i<=n; i++) { dis[i]=INF; cost[i]=INF; } memset(vis,0,sizeof(vis)); while(!que.empty()) que.pop(); que.push(1); //sum2++; vis[1]=true; dis[1]=0; cost[1]=0; while(!que.empty()) { u=que.front(); que.pop(); vis[u]=false; for(int i=head[u]; i!=-1; i=edges[i].next) { int v=edges[i].to; int w=edges[i].w; int d=edges[i].d; if(dis[v]>dis[u]+d)//不能在这里直接用等号,用了之后第三组样例过不去 { dis[v]=dis[u]+d; cost[v]=w; if(!vis[v]) { vis[v]=true; que.push(v); } } else if(dis[v]==dis[u]+d) { if(cost[v]>w) cost[v]=w; } } } for(int i=1;i<=n;i++) cost[0]+=cost[i]; return cost[0];}int main(){ int u0,v0,d0,c0; while(cin>>n>>m) { init(); if(n==0&&m==0) break; int sum=0; for(int i=1; i<=m; i++) { cin>>u0>>v0>>d0>>c0; add(u0,v0,d0,c0); add(v0,u0,d0,c0); } sum=spfa(n); cout<<sum<<endl; } return 0;}
0 0
- AOJ2249Contest Page(最短路径spfa)
- spfa最短路径
- 最短路径spfa
- spfa 最短路径
- 最短路径 -- spfa
- SPFA最短路径
- SPFA--最短路径
- 最短路径问题(SPFA)
- hdu1874(最短路径问题SPFA)
- SDUToj 2622 最短路径(SPFA)
- 十七、最短路径问题(SPFA)
- SDUT2622-------最短路径(SPFA)
- SPFA算法(最短路径)
- 【模板】最短路径(Floyed&SPFA )
- 浪里个浪 (spfa最短路径)
- 最短路径算法---SPFA
- 最短路径----SPFA算法
- 最短路径之 SPFA
- a1005. Spell It Right (20)
- 【HDOJ 5653】 Bomber Man wants to bomb an Array.(DP)
- HDOJ 5651-xiaoxin juju needs help【字符的全排列】
- 红黑树代码实践
- 归园田居 东晋 陶渊明 注音版
- AOJ2249Contest Page(最短路径spfa)
- 借助SystemBarTint实现透明标题栏(沉浸式)
- 最近对问题,分治法求解
- Android Studio 2.1 Preview 4 发布,以及新增的两点攺动.
- adb相关问题
- 合并模拟器和真机调试的静态库
- 堆排序
- UVA 11090 图论加二分
- ubuntu tftp服务搭建