我的最短路学习记录(17.2.9)

题干:某地有N个地点(2=<N<=100),将这些地点从1...N依次编号,给出T条连接两个不同地点的通道(1=<T<=2000),并给出每条通道相应的距离,要求求出从地点1到N最短距离。

例图: 输入:第一行:两个整数:N    T;

第二...T+1行:T条通道;

答:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define maxint 0x3f3f3f
int map[1100][1100],s[1100],dist[1100];
int n;
void dijkstra(int v0);
int main()
{
    int m;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        memset(map,maxint,sizeof(map));//初始化不同两点之间距离无限大
        int u,v,w;
        for(int i=1;i<=m;i++)
        {
            scanf("%d%d%d",&u,&v,&w);
            if(w<map[u][v])//取所给通道中的最短距离
            {
                map[u][v]=w;
               map[v][u]=w;//一个距离对应两点 没有方向
            }
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
        {
            if(i==j)
                map[i][j]=0;
        }
        dijkstra(1);
         printf("%d\n",dist[n]);

    }
    return 0;
}
void dijkstra(int v0)
{
    int i,j,min,pos;
    memset(s,0,sizeof(s));
    s[v0]=1;
    pos=1;
    for(i=1;i<=n;i++)
        //if(i!=pos)
        dist[i]=map[pos][i];
    for(i=1;i<=n-1;i++)
    {
        min=maxint;
        for(j=1;j<=n;j++)
            if(s[j]==0&&dist[j]<min)
        {
            min=dist[j];
            pos=j;
        }
        s[pos]=1;
        for(j=1;j<=n;j++)
        {
            if(s[j]==0&&map[pos][j]<maxint&&dist[pos]+map[pos][j]<dist[j])
                dist[j]=map[pos][j]+dist[pos];
        }
    }
}

  

时间: 2024-11-07 11:37:52

我的最短路学习记录(17.2.9)的相关文章

libgdx学习记录17——照相机Camera

照相机在libgdx中的地位举足轻重,贯穿于整个游戏开发过程的始终.一般我们都通过Stage封装而间接使用Camera,同时我们也可以单独使用Camera以完成背景的移动.元素的放大.旋转等操作. Camera分为PerspectiveCamera(远景照相机)和OrthographicCamera(正交照相机). PerspectiveCamera为正常的照相机,当距离物体越远,则物体越小,一般在3D空间中使用. OrthographicCamera忽略了其Z轴,不管距离物体多远,其大小始终不

CMU Deep Learning 2018 by Bhiksha Raj 学习记录(17)

NN is pretty bad at learning this pattern. green dots are referred to the first layer. blue -> second layer red -> third layer https://github.com/cmudeeplearning11785/machine_learning_gpu/blob/master/Dockerfile www.dockerhub.com https://github.com/w

17 | 如何正确地显示随机消息? 学习记录

<MySQL实战45讲>17 | 如何正确地显示随机消息? 学习记录http://naotu.baidu.com/file/ee69cc1cd0aefb09e02efbaf9a3b2909?token=ba56dcf185ed4e27 原文地址:https://www.cnblogs.com/jtfr/p/11368240.html

libgdx学习记录19——图片动态打包PixmapPacker

libgdx中,opengl 1.x要求图片长宽必须为2的整次幂,一般有如下解决方法 1. 将opengl 1.x改为opengl 2.0.(libgdx 1.0版本后不支持1.x,当然不存在这个问题,这里针对的是0.9.9版本) 2. 使用TexturePacker将图片打包好然后作成一张大图添加进来. 第二种方法是常用方法,但是不太灵活,添加.删除某些图片不太方便,改动较大.这里可以考虑使用PixmapPacker将图片进行动态打包. 主要方法: pack(String name, Pixm

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

C#学习记录4——结构体,接口

1.结构体 对于C++语言来说,其实结构体和类几乎没有什么太大的区别.类能够实现的功能,使用结构体大部分也可以. 不过,在C#里面,我们把结构体看作是一种轻量的类的替代品.它和类一样有构造方法,属性,成员属性/数据,甚至是操作符.注意struct构造方法必须有传入参数. 当然struct也不是完全支持类的所有功能的. 首先,结构体无法进行继承.也就是说,结构体不想类那样灵活,代码也无法复用. 其次,也是非常重要的一点:结构体是一种值类型,而类是引用类型.这两种类型的区别,可以查看C#学习记录3上

libgdx学习记录23——图片移动选择

模拟移动选择图片,采用相机实现. 1 package com.fxb.newtest; 2 3 import com.badlogic.gdx.ApplicationAdapter; 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.graphics.Color; 6 import com.badlogic.gdx.graphics.GL10; 7 import com.badlogic.gdx.graphics.Texture;

ELK stack 学习记录

ELK日志分析平台学习记录 首先ELK主要指elasticsearch .logstash 和kibana,三个开源软件组合而成的一套日志平台解决方案.可以将平时收集到的日志,通过前台展示出来,并且可以加以分析,理论上可以解放劳动力(再也不用干上生产取日志这种活了--很搓). 最近在研究ELKstack日志分析平台,网上相关的中文资料不多.所以呢也就写了这篇文章将自己的一些学习认识总结记录下来,基本偏实战,概念理论较少,概念这块,我想以后可以再开一篇文章来做一个阐述总结. 这篇文章中会先讲一下搭

libgdx学习记录11——平铺地图TiledMap

地图对于游戏场景十分重要,很多游戏都需要对地图进行编辑,可使用TileMap进行编辑并生成对应的tmx格式地图文件. 编辑好后,可通过TmxMapLoader来读取地图文件.可通过一个正交相机OthographicCamera和正交地图渲染器OrthogonalTiledMapRenderer来进行显示. 实例如下: 1 package com.fxb.newtest; 2 3 import com.badlogic.gdx.ApplicationAdapter; 4 import com.ba