zoukankan      html  css  js  c++  java
  • Dijkstra

    /*

    O(V^2)

    */

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    using namespace std;

    int v,e;//顶点数
    const int INF=1<<30;
    const int max_v=1e4+5;
    int d[max_v];//顶点s出发的最短距离
    int cost[max_v][max_v];//边权值
    bool used[max_v];//已经使用过的图

    void  dijkstra(int start)
    {
        fill(d,d+v,INF);
        fill(used,used+v,false);
        d[start]=0;
        while(true)
        {
            int t=-1;
            for(int u=0;u<v;u++)
            {
                if(!used[u]&&(t==-1||d[u]<d[t]))
                    t=u;
            }
            if(t==-1)
                break;
            used[t]=true;
            for(int u=1;u<v;u++)
            {
                d[u]=min(d[u],d[t]+cost[t][u]);
            }

        }
    }

    int main()
    {
        cin>>v>>e;
        for(int i=0;i<v;i++)
        {
            for(int j=0;j<v;j++)
                cost[i][j]=INF;
        }
        int x,y,val;
        for(int i=0;i<e;i++)
        {
            cin>>x>>y>>val;
            cost[x][y]=val;
        }
        int start,End;
        cin>>start>>End;
        dijkstra(start);
        for(int i=0;i<v;i++)
            cout<<d[i]<<' ';
        cout<<endl;
        cout<< d[End]<<endl;
        return 0;
    }

  • 相关阅读:
    第12课
    第11课
    第6课
    第5课
    ubuntu apache 通过端口新建多个站点
    phpstudy所需运行库
    ubuntu 修改和配置ip
    Linux Cp命令
    Ubuntu各个版本的镜像下载地址
    ubuntu 虚拟机添加多个站点
  • 原文地址:https://www.cnblogs.com/unknownname/p/7754310.html
Copyright © 2011-2022 走看看