BOJ 314 Good boy, laiyifa! [最短路spfa]
2013-03-21 14:54
211 查看
水题。
两遍spfa搞定。
手生,spfa写错了一个变量。wa了无数次。
两遍spfa搞定。
手生,spfa写错了一个变量。wa了无数次。
#include<iostream> #include<fstream> #include<map> #include<vector> #include<string> #include<memory.h> #include<cmath> #include<algorithm> #include<queue> #define Min(a,b) (a<b?a:b) #define Max(a,b) (a>b?a:b) #define Abs(a) (a>0?(a):-(a)) #define llong long long int using namespace std; const int N=1005,inf=0x7fffffff; int n,m; int mat ; int dis ; bool vis ; int spfa(int s,int t) { for(int i =1;i<=n;i++) dis[i]=inf; dis[s]=0; queue<int> que; memset(vis,0,sizeof(vis)); vis[s]=true; que.push(s); while(!que.empty()) { int now=que.front(); que.pop(); vis[now]=false; for(int i=1;i<=n;i++) { if(mat[now][i] && dis[now]!=inf && dis[i] > dis[now]+mat[now][i]) { dis[i]=dis[now]+mat[now][i]; if(!vis[i]) { vis[i]=true; que.push(i); } } } } return dis[t]; } int main() { while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { scanf("%d",mat[i]+j); } int ans=0,ret=0; ret=spfa(1,n); if(ret!=inf) ans+=ret; else { printf("-1\n"); continue; } ret=spfa(n,1); if(ret!=inf) ans+=ret; else { printf("-1\n"); continue; } if(ans<=m) { printf("%d\n",ans); } else { printf("-1\n"); } } return 0; }
相关文章推荐
- poj2449 Remmarguts' Date --- k短路模板(SPFA+A*)
- hdu4725The Shortest Path in Nya Graph---spfa求最短路
- BZOJ-1975 魔法猪学院 K短路 (A*+SPFA)
- hdu 2112 HDU Today 最短路spfa+容器map
- 浅谈最短路中的Bellman–Ford 算法 (SPFA
- LightOJ - 1074 Extended Traffic (最短路- spfa判断负环)
- POJ 2447 Remmarguts' Date【k短路 SPFA+A* 模板题】
- 最短路打印路径SPFA(good)uva11374
- 最短路模板——dijkstra,SPFA(邻接表实现)
- 最短路 - spfa - (一)
- POJ 3255 Roadblocks 次短路 SPFA
- Codeforces #361 (Div. 2)B-Mike and Shortcuts(spfa最短路)
- 【POJ 3259】Wormholes(最短路SPFA/Bellman_Ford)
- Remmarguts' Date POJ - 2449 第k短路 SPFA+A*
- 次短路[SPFA]
- POJ1062 昂贵的聘礼 解题报告【最短路/SPFA】
- Gym-100851F Froggy Ford 最短路变形 dijkstra || spfa
- [ACM模板]单源最短路SPFA
- 最短路总结(迪杰斯特拉+floyed+SPFA)
- spfa求最短路模板(邻接表)