P1339 Heat Wave G(floyd算法)C++

P1339 [USACO09OCT]Heat Wave G

在这里插入图片描述
输入:

7 11 5 4
2 4 2
1 4 3
7 2 2
3 4 3
5 7 5
7 3 3
6 1 1
6 3 4
2 4 3
5 6 3
7 2 1

输出:

7

在这里插入图片描述

直接floyd算法走起:

#include <iostream>
#include <cstring>
using namespace std;
int c,t,ts,te,ti,dis[2501],f[2501][2501],fi,d;
bool flag[2501]= {
    
    0};
int main() {
    
    
    cin>>t>>c>>ts>>te;
    memset(f,9999999,sizeof(f));	//先把每个距离设为假想无穷大
    for(int i=1; i<=c; i++) {
    
    
        cin>>fi>>ti>>d;
        f[fi][ti]=f[ti][fi]=d;		//由于这是无向图,所以需要对称一下
    }
    for(int i=1; i<=t; i++) dis[i]=f[ts][i];
    flag[ts]=true;
    for(int i=1; i<t; i++) {
    
    
        int minl=9999999,k=0;
        for(int j=1; j<=t; j++)
            if(!flag[j]&&dis[j]<minl)	//Floyd模板代码
                minl=dis[j],k=j;
        if(k==0) break;
        flag[k]=true;
        for(int j=1; j<=t; j++)
            if(dis[k]+f[k][j]<dis[j])	//还是个模板
                dis[j]=dis[k]+f[k][j];
    }
    cout<<dis[te];
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wangyurenwls/article/details/118971065