zoukankan      html  css  js  c++  java
  • dijksta 最短路径算法

    #include<iostream>
    #include<string.h>
    #include<math.h>
    #include<vector>
    using namespace std;
    int n,m,k; 
    int ans;
    int mod=1e9+7;
    int a[105][105];
    //bool vis[105]; 
    const int N=1001;
    const int M=10001;
    struct edge{
        int v,w,next;
        edge(){};
        edge(int _v,int _w,int _next){ //_v 连接的点 _w 权值  _next 下一个点 
            v=_v;
            w=_w;
            next=_next;
        }
    }e[M*2]; 
    int head[N],size;//表示当前一共的边数 
    void init(){
        memset(head,-1,sizeof(head));
        size=0;
    }
    void insert(int u,int v,int w){
        e[size]=edge(v,w,head[u]);
        head[u]=size++; 
    }
    void insert2(int u,int v,int w){
        insert(u,v,w);
        insert(v,u,w);
    } 
    int dis[N];
    bool vis[N];
    void dijkstra(int u){
        memset(vis,false,sizeof(vis));
        memset(dis,0x3f,sizeof(dis));
        dis[u]=0;
        for(int i=0;i<n;i++){
            int mind=1000000,minj=-1;
            for(int j=1;j<=n;j++){
                if(!vis[j]&&dis[j]<mind){
                    minj=j;
                    mind=dis[j];
                }
            }
            if(minj==-1){
                return;
            }
            vis[minj]=true;
            for(int j=head[minj];~j;j=e[j].next){
                int v=e[j].v;
                int w=e[j].w;
                if(!vis[j]&&dis[v]>dis[minj]+w){
                    dis[v]=dis[minj]+w;
                }
            }
        }
    }
    int main(){
        init();
        int u,v,w;
        cin>>n>>m;
        while(m--){
            cin>>u>>v>>w;
            insert2(u,v,w);
        } 
        dijkstra(1);
        cout<<dis[n]<<endl;
        return 0;
    }
  • 相关阅读:
    小a和uim之大逃离(dp)
    c++stl应用入门
    tar: 从成员名中删除开头的“/”
    yii中rights安装
    python中operator.itemgetter
    python中时间和时区
    python --那些你应该知道的知识点
    rsync拉取远程文件
    django中时区设置
    django中添加用户
  • 原文地址:https://www.cnblogs.com/xusi/p/12487449.html
Copyright © 2011-2022 走看看