zoukankan      html  css  js  c++  java
  • 洛谷单元最短路标准版——spfa优化

    #include<cstdio>

    #include<queue>

    #include<vector>

    #include<cstring>

    using namespace std;

    int n,m,k;

    int dis[100001];

    vector<int>a[100001],zhi[100001];

    bool fin[100001];

    struct pp

    {

             int dian;

    }dian;

    priority_queue <pp>q;

    bool operator <(pp a,pp b)

    {

             return dis[a.dian]>dis[b.dian];

    }

    void shengcheng()

    {

             for(int i=1;i<=n;i++)

             {

                       dis[i]=1000000009;

             }

             dis[k]=0;

             fin[k]=1;

             while(q.empty()==0)

             {

                       int u=q.top().dian;q.pop();

                       fin[u]=0;

                       for(int i=0;i<a[u].size();i++)

                       {

                                int w=a[u][i];

                                if(dis[w]>dis[u]+zhi[u][i])

                                {

                                         dis[w]=dis[u]+zhi[u][i];

                                         if(fin[w]==0)

                                         {

                                                   fin[w]=1;

                                                   dian.dian=w;

                                                   q.push(dian);

                                         }

                                }

                       }

             }

    }

    int x,y,z;

    int main()

    {

             scanf("%d%d%d",&n,&m,&k);

             for(int i=1;i<=m;i++)

             {

                      

                       scanf("%d%d%d",&x,&y,&z);

                       a[x].push_back(y);

                       zhi[x].push_back(z);

                      

             }

             dian.dian=k;

             q.push(dian);

             shengcheng();

             for(int i=1;i<=n;i++)

             {

                       if(i!=k)

                       printf("%d ",dis[i]);

                       else

                       printf("0 ");

             }

             return 0;

    }

    我不会迪杰斯特拉,于是想出了这个来偷懒

  • 相关阅读:
    17 盒子模型
    16 input默认样式清除
    15 组合选择器
    14 CSS权重深入
    13 CSS样式权重问题
    12 子代选择器和后代选择器
    11 CSS的三种引入方式和基本选择器
    10 table标签
    NOIP1998拼数
    NOIP1998车站
  • 原文地址:https://www.cnblogs.com/fanhao050109/p/11455948.html
Copyright © 2011-2022 走看看