Flyod 算法(两两之间的最短路径)
动态规划方法,通过相邻矩阵, 然后把最后的结果存在这么一个矩阵里面,(i,j),

#include <iostream>

#include <vector>

using namespace std;

#define M 301

#define LIM 200000000

int w[M][M],d[2][M][M];

void floyd(int g[M][M],int d[2][M][M],int n){

int i,j,k;

for(i=1;i<=n;i++){

for(j=1;j<=n;j++){

d[0][i][j]=g[i][j];

}

d[0][i][i]=0;

}        //这里是令d[0]=g

for(k=1;k<=n;k++){

for(i=1;i<=n;i++)

for(j=1;j<=n;j++){

int t1=k%2; int t2=(t1+1)%2;

d[t1][i][j]=d[t2][i][j]< d[t2][i][k]+d[t2][k][j]?d[t2][i][j]:d[t2][i][k]+d[t2][k][j];

}

}

}

2. DijStra算法(单源节点算法,一个到其他定点所有的算法)

#define M 101

#define LIM 20000000

int g[M][M],d[M],fd[2][M][M],gt[M][M],set[M];

inline void init(int d[M],int n,int s){  //初始化图

int i;

for(i=1;i<=n;i++)    d[i]=LIM;

d[s]=0;

}

inline void relax(int d[M],int u,int v,int duv){

if(d[v]>d[u]+duv)   d[v]=d[u]+duv;

}

void dijkstra(int g[M][M],int d[M],int n,int s){ //n is |V| && s is the source

init(d,n,s);

int q[M],ql=1,qf=1; //队列

int i;

for(i=1;i<=n;i++) q[ql++]=i;

while(qf!=ql){

int min=qf;

for(i=qf;i<ql;i++) if(d[q[i]]<d[q[min]]) min=i;

swap(q[qf],q[min]); //q[qf] is the min

int u=q[qf++];

for(i=1;i<=n;i++){

if(g[u][i]!=0) relax(d,u,i,g[u][i]);

}

}

}

3. BellmanFord算法
  g[][],是一个矩阵图,用于表达有向图 点之间的权重。

inline void init(int d[M],int n,int s){  //初始化图

int i;

for(i=1;i<=n;i++)    d[i]=2000000000;

d[s]=0;

}

inline void relax(int d[M],int u,int v,int duv){

if(d[v]>d[u]+duv)   d[v]=d[u]+duv;

}

void bell_man(int g[M][M],int d[M],int n,int s){ //n个结点 s为源点

int i,j,k;

init(d,n,s);

for(k=1;k<n;k++){

for(i=1;i<=n;i++)

for(j=1;j<=n;j++){

if(g[i][j]!=0) relax(d,i,j,g[i][j]);

}

}

}

Flyod 算法(两两之间的最短路径)的更多相关文章

  1. hdoj 1869 六度分离【最短路径求两两边之间最长边】

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. Codeforces Round #588 (Div. 2)-E. Kamil and Making a Stream-求树上同一直径上两两节点之间gcd的和

    Codeforces Round #588 (Div. 2)-E. Kamil and Making a Stream-求树上同一直径上两两节点之间gcd的和 [Problem Description ...

  3. JavaScript获取两个数之间的任意随机数

    通过JavaScript的Math.random()方法可以获取0到1之间的任意随机数,那如何获取任意给定的两个数之间的随机数呢?如获取2和5之间的随机数,5和10之间的随机数等. 由于Math.ra ...

  4. 机器学习-文本数据-文本的相关性矩阵 1.cosing_similarity(用于计算两两特征之间的相关性)

    函数说明: 1. cosing_similarity(array)   输入的样本为array格式,为经过词袋模型编码以后的向量化特征,用于计算两两样本之间的相关性 当我们使用词频或者TFidf构造出 ...

  5. 浅谈EM算法的两个理解角度

    http://blog.csdn.net/xmu_jupiter/article/details/50936177 最近在写毕业论文,由于EM算法在我的研究方向中经常用到,所以把相关的资料又拿出来看了 ...

  6. xgboost算法教程(两种使用方法)

    标签: xgboost 作者:炼己者 ------ 欢迎大家访问我的简书以及我的博客 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! ------ ...

  7. Codeforces Round #164 (Div. 2) A. Games【暴力/模拟/每个球队分主场和客场,所有球队两两之间进行一场比赛,要求双方球服颜色不能相同】

    A. Games time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...

  8. _DataStructure_C_Impl:Floyd算法求有向网N的各顶点v和w之间的最短路径

    #include<stdio.h> #include<stdlib.h> #include<string.h> typedef char VertexType[4] ...

  9. 算法题:给你一个自然数N,求[6, N]之内的全部素数中, 两两之和为偶数的那些偶数。

    /* 算法题:给你一个自然数N,求[6, N]之内的全部素数中. 两两之和为偶数的那些偶数. */ #include <iostream> using namespace std; voi ...

随机推荐

  1. 借助 Resharper 和 StyleCop 让代码更整洁

    一:工具安装 Resharper 和 StyleCop 必须安装. Resharper 的配置文件如下:Resharper.zip 请按如下步骤导入, 1: 2: 3:   StyleCope 的配置 ...

  2. [3] 球(Sphere)图形的生成算法

    顶点数据的生成 bool YfBuildSphereVertices ( Yreal radius, Yuint slices, Yuint stacks, YeOriginPose originPo ...

  3. UVA 10012 How Big Is It?(暴力枚举)

      How Big Is It?  Ian's going to California, and he has to pack his things, including his collection ...

  4. [leetcode]Populating Next Right Pointers in Each Node II @ Python

    原题地址:https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/ 题意: Follow up ...

  5. API手册 常用功能

    directive [ng] a form input input [checkbox] input [email] input [number] input [radio] input [text] ...

  6. IOS Xib使用——为控制器添加Xib文件

    Xib文件是一个轻量级的用来描述局部界面的文件,它与StoryBoard类似,都是使用Interface Bulider工具进行编辑.但是StoryBoard是重量级的,它是用来描述整个软件的多个界面 ...

  7. Android生成带图片的二维码

    一.问题描述 在开发中需要将信息转换为二维码存储并要求带有公司的logo,我们知道Google的Zxing开源项目就很好的帮助我们实现条形码.二维码的生成和解析,但带有logo的官网并没有提供demo ...

  8. Android NFC近场通信03----读写MifareClassic卡

                                           Android NFC近场通信02----读写MifareClassic卡 一.MifareClassic卡 相关 一般来 ...

  9. Android -- taskAffinity

    每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task.如果一个Activity没有显式的指明该Activity的taskAffinity,那么它的这个属性就等于Ap ...

  10. angular6 Can't bind to 'zzst' since it isn't a known property of

    文档: https://angular.io/guide/template-syntax#event-binding The Angular compiler may reject these bin ...