洛谷 P1359 租用游艇 题解

题目传送门

这道题还是上模板啦~~SPFA大法好(本人还是懒得打邻接表)

一道橙题:

上代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[2510][2510],m,fr,to;
void add(int x,int y,int z){a[x][y]=z;}
int dis[2510];
bool vis[2510];
queue<int> q;
void SPFA(int from){
    vis[from]=1;
    q.push(from);dis[from]=0;
    while(!q.empty()){
        int p=q.front();vis[p]=0;
        q.pop();
        for(int i=1;i<=n;i++){
            if(a[p][i]!=0&&dis[i]>dis[p]+a[p][i]){
                dis[i]=dis[p]+a[p][i];
                if(vis[i]==0){
                    vis[i]=1;
                    q.push(i);
                }
            }
        }
    }
}
int main(){
    scanf("%d%d%d%d",&n,&m,&fr,&to);
    for(int i=1;i<=m;i++){
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z);
        add(y,x,z);
    }
    memset(dis,127,sizeof(dis));
    SPFA(fr);
    printf("%d\n",dis[to]);
}

猜你喜欢

转载自www.cnblogs.com/yzx1798106406/p/9163383.html