1. 程式人生 > >洛谷P1339 [USACO09OCT]熱浪Heat Wave spfa

洛谷P1339 [USACO09OCT]熱浪Heat Wave spfa

傳送門

忙裡偷閒,做一道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(); }