图结构练习——最短路径

题目描述

 给定一个带权无向图,求节点1到节点n的最短路径。
 

输入

 输入包含多组数据,格式如下。
第一行包括两个整数n m,代表节点个数和边的个数。(n<=100)
剩下m行每行3个正整数a b c,代表节点a和节点b之间有一条边,权值为c。
 

输出

 每组输出占一行,仅输出从1到n的最短路径权值。(保证最短路径存在)
 

示例输入

3 2
1 2 1
1 3 1
1 0

示例输出

1
0

提示




#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
typedef struct arcnode
{
    int adj;
    int info;
}arcnode,adjmatrix[101][101];
typedef struct
{
    adjmatrix a;
    int vn,an;
}MG;
struct node
{
    int data;//存储结点;
    int step;//最小的路径;
};
int i,j;
int create(MG &g,int n,int m)//邻接矩阵的建立;
{
    int v1,v2,w;
    g.vn=n;
    g.an=m;
    for(i=1;i<=g.vn;i++)
        for(j=1;j<=g.vn;j++)
            if(i==j)
          g.a[i][j].adj=0;
        else g.a[i][j].adj=INF;//规定不同两点间的距离为无穷大;
    for(i=1;i<=g.an;i++)
    {
        scanf("%d%d%d",&v1,&v2,&w);
        if(g.a[v1][v2].adj>w||g.a[v2][v1].adj>w)
            g.a[v1][v2].adj=w; //有重复边选权值最小的保存
        g.a[v2][v1]=g.a[v1][v2];
    }
    return 1;
}
void floyd(MG &g)//弗洛伊德算法(找两点间的最小路径);
{
    int k;
    for(k=1;k<=g.vn;k++)
        for(i=1;i<=g.vn;i++)
           for(j=1;j<=g.vn;j++)
              if(i!=j)
    {
        if(g.a[i][j].adj>g.a[i][k].adj+g.a[k][j].adj)
            g.a[i][j].adj=g.a[i][k].adj+g.a[k][j].adj;
    }
}
int main()
{
    MG g;
    int m,n;
    while(~scanf("%d%d",&n,&m))
    {
        create(g,n,m);
        floyd(g);
        printf("%d\n",g.a[1][n].adj);
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++强大背后

在31年前(1979年)&#xff0c;一名刚获得博士学位的研究员&#xff0c;为了开发一个软件项目发明了一门新编程语言&#xff0c;该研究员名为Bjarne Stroustrup&#xff0c;该门语言则命名为——C with classes&#xff0c;四年后改称为C。C是一门通用编程语言&#xff0c;支持多…

javaWeb回忆思维导图

出处&#xff1a;https://blog.csdn.net/jackfrued/article/details/42617675 https://www.cnblogs.com/xieyupeng/p/6961667.html

如何理解const char*, char const*, char*const等

const char*, char const*, char*const的区别问题几乎是C面试中每次都会有的题目。 事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 Bjarne在他的The C Programming Language里面给出过一个助记的方法&#xff1a; 把一个声明从右向左读。 char * const cp; …

查找练习 hash——出现过的数字

题目描述 有一个数据字典&#xff0c;里面存有n个数字(n<100000)&#xff0c;小明现在接到一个任务&#xff0c;这项任务看起来非常简单——给定m个数字&#xff0c;分别查询这m个数字是否出现在字典之中&#xff1b;但是考虑到数据量的问题&#xff0c;小明找到了善于编程的…

读过的最好的 C++ 开源代码

https://www.zhihu.com/question/21376384

数据结构实验之查找五:平方之哈希表

题目描述 给定的一组无重复数据的正整数&#xff0c;根据给定的哈希函数建立其对应hash表&#xff0c;哈希函数是H(Key)Key%P&#xff0c;P是哈希表表长&#xff0c;P是素数&#xff0c;处理冲突的方法采用平方探测方法&#xff0c;增量dii^2,i1,2,3,...,m-1 输入 输入一组测试…

Spring详细导包截图以及IOC和DI思想

思想 IOC DI Spring中的工厂(容器) ApplicationContext&#xff1a; BeanFactory(过时)&#xff1a; BeanFactory和ApplicationContext区别 BeanFactory&#xff1a; 1.Spring原始接口&#xff0c;针对原始接口实现类功能较为单一 2.是在getBean的时候才会生成类的实例…

毕业两年的我--奋斗中的程序员

又到一年毕业季&#xff0c;不知不觉&#xff0c;自己毕业快两年了&#xff0c;在这两年中&#xff0c;从一位小白程序员蜕化到现在的拥有两年经验的C程序员&#xff0c;这两年里面&#xff0c;不敢说成长有多快&#xff0c;进步有多大&#xff0c;但是感觉很踏实&#xff0c;每…

数据结构实验之查找七:线性之哈希表

题目描述 根据给定的一系列整数关键字和素数p,用除留余数法定义hash函数H(Key)Key%p,将关键字映射到长度为p的哈希表中&#xff0c;用线性探测法解决冲突。重复关键字放在hash表中的同一位置。 输入 连续输入多组数据&#xff0c;每组输入数据第一行为两个正整数N(N < 1000)…

spring配置讲解

Bean元素 Bean元素进阶 scope属性&#xff1a; 1.singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例 2.prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.整合struts2时,ActionBean必须配置为多例的. 3.request…

找女朋友

题目描述 山东理工大学有很多学生&#xff0c;当然也有很多美女&#xff0c;机械实验班的学委&#xff08;外号&#xff1a;大王八&#xff09;很想找个女朋友&#xff0c;但他想找个身高和自己相配的女生坐女朋友&#xff0c;现有理工大N个美女的身高数据&#xff0c;但由于N的…

情商低的七种表现,你占了几个

你身边有没有这样的人&#xff1a;大家刚刚还聊的热火朝天&#xff0c;却在他进门的瞬间&#xff0c;整场“冷冻结冰”&#xff0c;大家都各忙各的&#xff0c;避免与他交流。我们称这样的人为“冷场帝”。那么&#xff0c;“冷场帝”是如何养成的&#xff1f;这样的人通常情商…

spring属性注入

注入方式 set方法注入 构造函数注入 p名称空间注入 spel注入(#表示理解为引用) 练习代码&#xff1a; <!-- 第二天 set注入 index:索引 ref:引用对象 type:参数类型--><bean name"person" class"com.spring.bean.Person"><constructor-a…

数据结构实验之排序一:一趟快排

题目描述 给定N个长整型范围内的整数&#xff0c;要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。 输入 连续输入多组数据&#xff0c;每组输入数据第一行给出正整数N(N < 10^5)&#xff0c;随后给出N个长整型范围内的整数&#xff0c;数字间以空格分隔。…

你所不知道的C和C++运行库

转自&#xff1a;http://blog.csdn.net/ithzhang/article/details/20160009 你所不知道的C和C运行库    周五晚&#xff0c;小雨&#xff0c;少见的未加班。无聊&#xff0c;遂准备写一篇博客&#xff0c;介绍一下C和C运行库&#xff0c;只因发现工作几年的人对此一知半解的…

使用注解配置spring如@Compnent、@Service、@Consroller、@scope和@value的使用

步骤 1.导包42spring-aop如图&#xff1a;为学习到该阶段需要用到的包(里面的aoptest是spring和junit整合测试的时候用到的)2.为主配置文件引入新的命名空间(约束)3.开启使用注解代理配置文件<?xml version"1.0" encoding"UTF-8"?> <beans xmln…

关于面向对象的理解

转自&#xff1a;http://blog.csdn.net/ithzhang/article/details/52983530 上次插件进程化分享时&#xff0c;感觉大家对面向对象思想的理解还停留在很基础的层次。面向对象思想确实很难理解&#xff0c;因此学习面向对象思想并非一日之功。我看过很多面向对象的书&#xff0c…

spring与junit整合测试

1.导包42aoptest 这里不愿意截图了&#xff0c;上面讲注解配置时候有截图2.配置注解 //帮我们创建容器 RunWith(SpringJUnit4ClassRunner.class) //指定创建容器时使用哪个配置文件 ContextConfiguration("classpath:applicationContext.xml") public class Demo {//…

linux后台开发具备能力集锦

Linux后台开发应该具备技能 一、linux和os: 1、命令&#xff1a;netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验 2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握&#xff0c;设置修改权限 tcp网络状态查看 各进程状态…