zoukankan      html  css  js  c++  java
  • Acwing 1129. 热浪 解题报告

    Acwing 1129. 热浪

      单源最短路模板。用 (Dijkstra) 即可。

    /*
    @Author: nonameless
    @Date:   2020-06-02 17:18:07
    @Email:  2835391726@qq.com
    @Blog:   https://www.cnblogs.com/nonameless/
    */
    #include <bits/stdc++.h>
    #define x first
    #define y second
    #define pb push_back
    #define sz(x) (int)x.size()
    #define all(x) x.begin(), x.end()
    using namespace std;
    typedef long long ll;
    typedef pair<ll, ll> PLL;
    typedef pair<int, int> PII;
    const double eps = 1e-8;
    const double PI  = acos(-1.0);
    const int INF = 0x3f3f3f3f;
    const ll LNF  = 0x3f3f3f3f3f3f;
    inline int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
    inline ll  gcd(ll  a, ll  b) { return b ? gcd(b, a % b) : a; }
    inline int lcm(int a, int b) { return a * b / gcd(a, b); }
    
    const int N = 2510, M = 6300 << 1;
    
    int idx = 0;
    int h[N], to[M], wei[M], nxt[M];
    
    int vis[N];
    int dist[N];
    
    void add(int u, int v, int w){
        to[ ++ idx] = v; nxt[idx] = h[u]; wei[idx] = w; h[u] = idx;
    }
    
    int main(){
    
        int t, c, ts, te;
        scanf("%d%d%d%d", &t, &c, &ts, &te);
        for(int i = 1; i <= c; i ++){
            int s, e, w;
            scanf("%d%d%d", &s, &e, &w);
            add(s, e, w);
            add(e, s, w);
        }
    
        priority_queue<PII, vector<PII>, greater<PII> > pq;
        pq.push({0, ts});
        memset(dist, INF, sizeof dist);
        dist[ts] = 0;
    
        memset(vis, 0, sizeof vis);
        while(!pq.empty()){
            PII cur = pq.top(); pq.pop();
            int d = cur.x, u = cur.y;
            if(vis[u]) continue;
            vis[u] = 1;
            for(int i = h[u]; i; i = nxt[i]){
                int node = to[i];
                int cost = wei[i];
                if(dist[node] >= dist[u] + cost){
                    dist[node] = dist[u] + cost;
                    pq.push({dist[node], node});
                }
            }
        }
    
        cout << dist[te] << endl;
    
        return 0;
    }
    
    
  • 相关阅读:
    图像轮廓提取
    图像分割学习
    数据的平面拟合 Plane Fitting
    目标跟踪_MeanShift
    灰度图像伪彩色
    OpenCv SGBM算法源码解读
    图像处理之滤波器
    Ubuntu下Jenkins(docker)配置Docker远程启动
    使用dockerfile文件创建镜像时docker build没有反应
    创建jdk8基础镜像
  • 原文地址:https://www.cnblogs.com/nonameless/p/13035795.html
Copyright © 2011-2022 走看看