最短路---dijsktra--邻接矩阵】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相同距离为0)不能到达输出-1. 说真的开始看到这个题,我想利用数字标记那些地名,再利用dijsktra算法,但不知道如何用代码实现,后来在网上看博客 才知道有这样一个头文件#include<map>,map 映射,可以有这种效果,那么这题也就so easy!了, 我的AC代码 #include&l…
( ̄▽ ̄)" #include<iostream> #include<cstdio> using namespace std; const int INF=10e7; ; int k,minn; int cost[MAXN][MAXN]; int lowcost[MAXN]; bool vis[MAXN]; void dij(int n,int start) { ;i<=n;i++) { lowcost[i]=INF;vis[i]=; } lowcost[start…
堆: using namespace dui //堆 { #include<queue> //需要的库 priority_queue < int > Q; //定义一个Q的大根堆,top()为较大的 priority_queue < int,vector < int >,greater< int > > q; //定义一个q的小根堆.top()为较小的 q.empty() //判断队空 q.push(x) //将x放入队列 q.pop() //将…
题目链接 我水爆了- - 容易发现可以把两个圆之间连边,左上为起点右下为终点,最小生成树直到起点跟终点连起来,输出边权/2就行. 然后80. 并不理解为什么这可以转化成spfa求最短路,邻接矩阵暴力跑一下就AC了. #include<cstdio> #include<algorithm> #include<cctype> #include<cstring> #include<cstdlib> #include<queue> #incl…
唔不知道怎么说--大概核心是把矩阵快速幂的乘法部分变成了Floyd一样的东西,非常之神 首先把点离散一下,最多有200个,然后建立邻接矩阵,a[u][v]为(u,v)之间的距离,没路就是inf 然后注意重载乘号的部分,注意到这样乘一次就相当于把本来存了经过k条路的最短路的邻接矩阵变成存了经过k+1条路的最短路的邻接矩阵 这样看来乘n次就行了,这里用矩阵快速幂 妙啊 #include<iostream> #include<cstdio> using namespace std; co…
Description 有一个神秘好人跟Bdcxq玩一个游戏,如果Bdcxq成功完成了这个游戏,那么他将会得到一件礼物. 这个游戏是这样的: 有一个梯子形的图如下,每条边都有一个权值. 神秘好人一开始会告诉Bdcxq每条边的权值. 然后神秘好人会做这样的事情: 1.神秘好人会修改某条边的权值: 2.神秘老人会问你从一个点走到另一个点所需经过边权和最小的权值和. 如果Bdcxq一直能答对问题,那么他就完成了游戏,也能得到礼物. 现在他请你编一个程序来帮他完成游戏. Input 输入文件的第一行包含…
题目 For their physical fitness program, \(N (2 ≤ N ≤ 1,000,000)\) cows have decided to run a relay race using the \(T (2 ≤ T ≤ 100)\) cow trails throughout the pasture. Each trail connects two different intersections \((1 ≤ I1_i ≤ 1,000; 1 ≤ I2_i ≤ 1,…
目录 1. 如何建图? 2. Floyd 3. Dijkstra 1. 如何建图? 要跑最短路,首先要有图 --鲁迅 常用的存储方法有两种,分别是邻接矩阵(用二维数组表示边)和邻接表(模拟链表表示边)两种,他们各有不同的优势和不足: 邻接矩阵 邻接表 使用范围 稠密图 主要是稀疏图 空间耗费 n^2(n节点数) 理论上是 e( e为边条数) 实现方式 二维数组 存储每个节点相连的节点和边权值 通常来讲,在数据范围足够小时,我们采用邻接矩阵,而数据范围大时采用邻接表 邻接矩阵实现: 无权图: g[…
POJ-图论-最短路模板 一.Floyd算法 刚读入数据时,G为读入的图邻接矩阵,更新后,G[i][j]表示结点i到结点j的最短路径长度 int G[N][N];//二维数组,其初始值即为该图的邻接矩阵 1.init():初始化图邻接矩阵 void init() { ; i <= n; i++) { ; j <= n; j++) { G[i][j] = -;//初始化邻接矩阵,用-1代表无穷 } G[i][i] = ;//初始化,自己到自己的路径长度为0 } } 2.floyd():更新最短路…
//朴素Dijkstra 边权都是正数 稠密图:点和边差的比较多 #include<cstring> #include<iostream> #include<algorithm> using namespace std; ; int n, m; int g[N][N];//邻接矩阵 稠密图 int dist[N];//距离 从1到每个点的距离 当前的最短距离 bool st[N]; //每一次 找到当前没有确定最短路长度的点当中距离最小的那一个, //然后用1到j的距离…