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;

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值