zoukankan      html  css  js  c++  java
  • luogu p3371 单源最短路径(dijkstral

    本来我写的对的

    我就多手写了个

    ios::sync_with_stdio(false);

    我程序里面用了cin 还有scanf 本来想偷偷懒

    我就说 我查了半天错 根本找不到的啊...

    后来交了几次 发现一直有RE 才发现...... 我好笨

    //最短路 dijkstral
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long  ll;
    const int maxn = 10010;
    const ll INF = 2147483647;
    typedef pair<ll ,int> pli;
    struct node
    {
        int to,cost;
        node(int t,int c):to(t),cost(c){}
        bool operator < (const node & a)const {
            return cost > a.cost;
        }
    };
    vector<node> E[maxn];
    ll d[maxn];
    priority_queue<pli,vector<pli>,greater<pli> > Q;
    
    int main()
    {
        
        int n,m,st;
        cin>> n>>m>>st;
        for(int i=1;i<=m;i++)
        {
            int x,y,v;
            scanf("%d %d %d",&x, &y ,&v);
            E[x].push_back({y,v});
        }
        for(int i=1;i<=n;i++)
        {
            d[i]=INF;
        }
        d[st] = 0;
        Q.push({0,st});
        while ( Q.size() )
        {
            pli now = Q.top();Q.pop();
            ll cost = now.first;
            int p=now.second;
            if(cost >= INF)
                continue;
            for(int i=0;i<E[p].size();i++)
            {
                int v = E[p][i].to;
                if(d[v] > cost + E[p][i].cost)
                {
                    d[v] = cost + E[p][i].cost;//更新最短路;
                    Q.push({d[v],v});
                }
            }
        }
        for(int i=1;i<=n;i++)
        {
            if(i!= n)
                cout<<d[i]<<" ";
            else
                cout<<d[i];
        }
        cout<<endl;
    
    }
  • 相关阅读:
    面试题
    学习Javascript闭包(Closure)
    git命令
    css3 3d翻转效果
    meta 如何写
    Java String equals和==的比较
    MySQL Explain详解
    MySQL explain,type分析(转)
    python的内存分析和处理
    python lambda的使用
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7435495.html
Copyright © 2011-2022 走看看