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

    View Code 
    #include <iostream>
    using namespace std;

    const int inf=999999999;

    int N,E;
    int dis[100];
    bool used[100];
    int map[100][100];

    int dijk(int s,int e)
    {
        memset(dis,255,sizeof(dis)); //初始化为-1,表示不可达
        memset(used,0,sizeof(used)); //均标记为未被访问
        
        dis[s]=0;
        used[s]=true;//标记s点
        
        int i,j;
        for(i=1;i<=N;i++)
        {
            if(i!=s)
            {
                if(map[s][i]!=-1)
                    dis[i]=map[s][i]; //为dis数组赋值
            }
        }
        for(i=1;i<N;i++)
        {
            
            int next;
            int min=inf;
            for(j=1;j<=N;j++)
            {
                if(!used[j] && dis[j]!=-1 && dis[j]<min) //未访问 相邻点 距离近
                {
                    min=dis[j];
                    next=j;
                }
            }
            
            used[next]=true//加入
            
            for(j=1;j<=N;j++)
            {
                if(!used[j] && map[next][j]!=-1 && (dis[next]+map[next][j]<dis[j] || dis[j]==-1)) //未访问 相邻点 距离变近
                {
                    dis[j]=dis[next]+map[next][j]; //修改
                }
            }
        }
        return dis[e];
    }

    int main()
    {
        memset(map,255,sizeof(map));
        cin>>N>>E;
        int i;
        int s,t,d;
        for(i=0;i<E;i++)
        {
            cin>>s>>t>>d;
            map[s][t]=d;
            map[t][s]=d;
        }

        int start,end;
        while(cin>>start>>end)
            cout<<dijk(start,end)<<endl;
        return 0;

    这是自己又一次写dijkstra算法了,希望能够渐渐熟练起来... 

  • 相关阅读:
    主机与虚拟机通信:以主机VS2010连接虚拟机MySql为例
    Json与类对象转换
    VS附加到进程调试的方法及应用场景
    地图API使用文档-以腾讯地图为例
    JS使用ActiveXObject读取数据库代码示例(只支持IE)
    css文件内引用外部资源文件的相对路径
    ::after,::before使用
    高德地图API应用
    LogNet4学习笔记
    MvcPager分页控件的使用
  • 原文地址:https://www.cnblogs.com/Knuth/p/2191788.html
Copyright © 2011-2022 走看看