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. php解决乱码问题时,出现Cannot modify header information问题的解决方法

    设置页面编码使用: header("Content-Type:text/html;charset=utf-8"); 会出现:Cannot modify header informa ...

  2. Insert Interval leetcode java

    题目: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if nec ...

  3. 即时通讯之smack客户端配置

    之前学习了通过Openfire+spark+smack的模式来完成我们的即时通讯软件,上次我们已经完成了Openfire的安装和配置,这次我们继续完成我们的客户端部分. 1.首先我们通过百度smack ...

  4. Design Your Own Protocol In Five Minutes

    https://mayaposch.wordpress.com/2011/10/03/design-your-own-protocol-in-five-minutes ---------------- ...

  5. spring boot xml与dao 映射关系

    mybatis的xml路径要和 dao的路径一模一样 dao 用@Mapper 注解

  6. java 正则表达式获得html字符串中<img src>中的src中的url地址

    public static Set<String> getImgStr(String htmlStr) { Set<String> pics = new HashSet< ...

  7. 解决ArcEngine开发程序“假死”现象

    在GIS数据处理中,数据量大是一个非常伤脑筋的问题.最近,在写一个CAD注记转Shapefile文件时,又遇到这个问题. 曾经处理一次数据,达130万个点,即测试区域内的栅格转成点全部处理,程序是写好 ...

  8. curl库的使用,32-64

    http 使用curl发起https请求 http://www.cnblogs.com/ainiaa/archive/2011/11/08/2241385.html Curl配置及编译: CFLAGS ...

  9. Nginx负载均衡简易方法

    做个简单的测试,一个Nginx, 通过FastCGI协议和另外两台服务器上的基于CppCMS开发的web server通信.配置方法很简单: 首先,必须在nginx.conf文件开头,server 配 ...

  10. PHP 表单 - 4(验证邮件和URL)

    PHP 表单 - 验证邮件和URL 本章节我们将介绍如何验证 names(名称), e-mails(邮件), 和 URLs. PHP - 验证名称 以下代码将通过简单的方式来检测 name 字段是否包 ...