bzoj 3408 热浪 最短路
一道最短路的模板题,就当练习一下SPFA和dijkstra了
SPFA
#include<bits/stdc++.h> using namespace std; struct edge{ int next,to,w; }e[13000]; int n,m,cnt,s,l; int head[2505],dis[2505]; bool vis[2505]; void insert(int u,int v,int k){ cnt++; e[cnt].next=head[u];e[cnt].to=v;e[cnt].w=k; head[u]=cnt; } int main(){ scanf("%d%d%d%d",&n,&m,&s,&l); int x,y,k; for(int i=1;i<=m;i++){ scanf("%d%d%d",&x,&y,&k); insert(x,y,k);insert(y,x,k); } queue<int> q; memset(dis,127,sizeof dis); dis[s]=0;vis[s]=1; q.push(s); while(!q.empty()){ int now=q.front();vis[now]=0; q.pop(); for(int i=head[now];i;i=e[i].next){ x=e[i].to; if(dis[x]>dis[now]+e[i].w){ dis[x]=dis[now]+e[i].w; if(!vis[x]){ vis[x]=1; q.push(x); } } } } printf("%d",dis[l]); return 0; }