洛谷p1339--热浪

这个是图片,理解一下

这个是Dijkstra的模板题,比较基础的题

Dijkstra我在之前也讲过了

见代码

#include<bits/stdc++.h>
using namespace std;
int t,c,ts,te,rs,re,ci;
int f[2501][2501],a[2501][2501],dis[2501];
bool p[2501];
int main() {
    scanf("%d%d%d%d",&t,&c,&ts,&te); //输入 
    for(int i=1;i<=t;i++)
    for(int j=1; j<=t; j++) f[i][j]=1e9;
    for(int i=1; i<=t; i++) dis[i]=1e9; //初始化 
    for(int i=1;i<=c;i++)
    {
        scanf("%d%d%d",&rs,&re,&ci);
        f[rs][re]=f[re][rs]=ci;
    }
    dis[ts]=0;
    for(int i=1; i<=t; i++) {
        int k=0,minn=1e9;
        for(int j=1; j<=t; j++) {
            if(!p[j]&&minn>dis[j]) {
                k=j;
                minn=dis[j];
            }
        }
        p[k]=true;//找那个中转站
        for(int j=1; j<=t; j++) //举出终点
{
if(!p[j]&&dis[k]+f[k][j]<dis[j]) dis[j]=dis[k]+f[k][j];//对此进行比较 } } printf("%d\n",dis[te]); return 0; }

 

posted @ 2019-06-04 20:34  小向同学  阅读(258)  评论(0编辑  收藏  举报