洛谷P1339 [USACO09OCT]熱浪Heat Wave spfa
阿新 • • 發佈:2018-11-30
忙裡偷閒,做一道spfa水題(呲牙呲牙)
#include<iostream> #include<queue> #include<vector> using namespace std; int t,c,ts,te; struct pp { int to,w; }; vector<pp>g[2505]; int dis[2505],book[2505]; const int inf=9999999; void spfa() { queue<int>q; int i; for(i=1;i<=t;i++)dis[i]=inf; dis[ts]=0; q.push(ts); while(q.size()) { int x=q.front(); q.pop(); book[x]=0; for(i=0;i<g[x].size();i++) { int y=g[x][i].to; if(dis[y]>dis[x]+g[x][i].w) { dis[y]=dis[x]+g[x][i].w; if(book[y]==0) { q.push(y); book[y]=1; } } } } } void solve() { cin>>t>>c>>ts>>te; int i; for(i=1;i<=c;i++) { int a,b,cc; cin>>a>>b>>cc; g[a].push_back((pp){b,cc}); g[b].push_back((pp){a,cc}); } spfa(); cout<<dis[te]<<endl; } int main() { solve(); }