題目大意:
給你一些點,讓你求S到T的最短路徑。
我只是來練習一下SPFA的
dijkstra:
#includeconst int INF=1000000; const int MAXN=200+10; int n,m; int map[MAXN][MAXN]; int dis[MAXN]; void dijkstra(int s) { for(int i=0;i dis) map[from][to]=map[to][from]=dis; } int s,t; scanf(%d%d,&s,&t); dijkstra(s); if(dis[t]==INF) puts(-1); else printf(%d ,dis[t]); } return 0; }
#include#include using namespace std; const int INF=1000000; const int MAXN=200+10; int n,m; int map[MAXN][MAXN]; int dis[MAXN]; void SPFA(int s) { for(int i=0;i q; q.push(s); while(!q.empty()) { int cur=q.front(); q.pop(); for(int i=0;i dis) map[from][to]=map[to][from]=dis; } int s,t; scanf(%d%d,&s,&t); SPFA(s); if(dis[t]==INF) puts(-1); else printf(%d ,dis[t]); } return 0; }