#include <stdio.h>
#include <time.h>
#include <stdlib.h> #define MAXN 150 //最大节点数
#define INF ((1<<31)-1) //无穷大数 int dist[MAXN][MAXN]; //记录两节点之间的距离
int parent[MAXN][MAXN]; //记录节点a到b路径中b的父节点 double random_d() //生成0~1间的随机数
{
return (double)rand()/RAND_MAX;
} int random_i(int m) //生成0~m间的随机数
{
return (int)(random_d()*(m-) + 0.5);
} void initial(int n) //初始化dist数组和parent数组
{
int a, b;
for(a = ; a < n; a++)
{
for(b = ; b < n; b++)
{
if(a != b)
{
dist[a][b] = INF; //初始阶段距离未知暂时定为无穷大
parent[a][b] = -;
}else{ //此时a等于b
dist[a][b] = ; //节点a到节点a自身的距离是0
parent[a][b] = a;
}
}
}
} void floyd(int n) //floyd算法,计算两点之间的最短距离
{
int a, b, k;
for(k=; k<n; k++)
{
for(a=; a < n; a++)
{
for(b = ; b < n; b++)
{
if(dist[a][k] == INF || dist[k][b] == INF) continue;
if(dist[a][b] > dist[a][k] + dist[k][b])
{
dist[a][b] = dist[a][k] + dist[k][b];
parent[a][b] = parent[k][b];
}
}
}
}
} void generate_graph(int n) //随机生成一张连通图
{
int i, j, v;
initial(n); //进行初始化
for(i = ; i<n; i++) //保证连通性,让0号节点与其他所有点相连
{
dist[][i] = dist[i][] = random_i() + ; //保证算法起作用,加大权值
parent[][i] = ;
parent[i][] = i;
}
for(i=; i<n; i++ )
{
for(j=i+; j<n; j++)
{
v = random_i() ; //随机生成权值
if(v != )
{
dist[i][j] = dist[j][i] = v;
parent[i][j] = i;
parent[j][i] = j;
}
}
}
} void show_graph(int n) //展示节点之间的连接关系及对应的权值
{
int i, j;
for(i=; i<n; i++)
{
for(j=i+; j<n; j++)
if(dist[i][j] != INF) printf("Direct distance between %d and %d: %d\n", i, j, dist[i][j]);
}
} void show_route(int a, int b) //显示a到b的距离最短的路径
{
if(a == b){
printf("%d", b);
}else{
show_route(a, parent[a][b]);
printf("-%d", b);
}
} int main()
{
int a, b;
srand(time(NULL)); //初始化随机数发生器种子 generate_graph(); //随机生成一张连通图
show_graph(); //展示节点之间的连接关系及对应的权值
floyd(); //floyd算法,计算两点之间的最短距离
printf("Please input starting point and end point: "); //提示用户输入两个节点,两个输入之间用逗号隔开,并保证节点编号小于100
scanf("%d %d", &a, &b); //读取用户输入
printf("The distance is %d\n", dist[a][b]); //输出最短距离
printf("The way is ");
show_route(a, b); //输出最短路径
printf("\n");
//printf("%d\n", INF);
return ;
}

sf的更多相关文章

  1. maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile

    <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...

  2. net.sf.json.JSONException: There is a cycle in the hierarchy!的解决办法

    使用Hibernate manytoone属性关联主表的时候,如果使用JSONArray把pojo对象转换成json对象时,很容易出现循环的异常.解决的办法就是, 在转换json对象时忽略manyto ...

  3. Json_异常_net.sf.json.JSONException: JSONObject["solution"] not found.

    net.sf.json.JSONException: JSONObject["solution"] not found. 没有这个元素造成的. 问题代码: JSONObject j ...

  4. 使用JSONObject遇到的问题,java.lang.NoClassDefFoundError: net/sf/json/JSONObject

    先是报 java.lang.NoClassDefFoundError: net/sf/json/JSONObject 这个错误, 打开项目属性找到java build path中的libaries,找 ...

  5. Net.Sf.Json java Object to JsonObject

    public class People{ private String name; public void setName(String name){ this.name = name; } publ ...

  6. spark mllib配置pom.xml错误 Multiple markers at this line Could not transfer artifact net.sf.opencsv:opencsv:jar:2.3 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org

    刚刚spark mllib,在maven repository网站http://mvnrepository.com/中查询mllib后得到相关库的最新dependence为: <dependen ...

  7. 获取<img src="sdf.jpg" Big="sf.jpg">中的big的值

    原代码: <img src="sdf.jpg" Big="sf.jpg" onclick="getsrc($(this).attr(" ...

  8. java.lang.ClassNotFoundException: net.sf.json.JSONArray,java.lang.NoClassDefFoundError: net/sf/json/JSONArray jetty跑项目遇到的问题

    2016-05-18 15:44:25 ERROR Dispatcher.error[user:|url:]:L38 - Dispatcher initialization failed Unable ...

  9. 【pom.xml 依赖】使用net.sf.json-lib-2.4-jdk15.jar所需要的其他依赖架包 以及其一直在pom.xml报错的问题

    特此声明: json-lib-2.4-jdk15.jar仅它本身不够,必须如下的几个依赖架包都有才能使用!!! 首先 将.json-lib-2.4-jdk15.jar以及其相关的依赖架包的正确配置给出 ...

  10. net.sf.json 时间格式的转化

    后台代码 //后台代码 response.setCharacterEncoding("UTF-8"); JsonConfig jsonConfig = new JsonConfig ...

随机推荐

  1. C# 3循环 for语句

    循环:可以反复执行某段代码,直到不满足循环条件为止. 一.循环的四要素:初始条件.循环条件.状态改变.循环体. 1.初始条件:循环最开始的状态. 2.循环条件:在什么条件下进行循环,不满足此条件,则循 ...

  2. PARTITION(number theory) ALSO Explosive number in codewars

    问题出于codewars,简言之:寻找和为一个整数的的不同整数组合.https://en.wikipedia.org/wiki/Partition_(number_theory) 例如:和为6的整数组 ...

  3. Servlet 浅谈(一)

    Servlet 的生命周期 类加载.实例化,init方法,service方法,destroy方法.关于这点,后面会有详细介绍. 什么是容器? 因为Servlet没有main方法,所以它受控于另一个Ja ...

  4. Scala基础入门-1

    首先需要Scala开发环境的搭建,网上自己找教程. 声明常量与变量 val foo = 0 // 常量 var bar = 0 // 变量 在Scala中,更加鼓励使用val来进行声明,也就是推荐使用 ...

  5. MySql 优化 网上资料

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  6. 星际争霸反作弊AG对战平台_支持108,113

    星际争霸反作弊AG对战平台_支持108,113,116 强大的星际反作弊功能,对战神器,让玩家公平对战 目前腾讯对战,浩方对战,VS对战平台都有星际外挂,AG平台什么都不干专门反外挂,希望热爱星际的玩 ...

  7. tabBar中tabBarItem选中颜色自定义设置

    1.在storyBoard中,选中tabBarController,设置tabBar中KeyPath中的(selectedImageTintColor)如图 2. 直接代码设置 tabBarContr ...

  8. [solaris]odbc-oracle,简单测试

    #include <string> #include <iostream> #include <stdio.h> #include <sql.h> #i ...

  9. IO-03. 求整数均值

    /** *A3-IO-03. 求整数均值(10) *C语言实现 *测试已通过 */ #include "stdio.h" int main() { int a,s,d,f; sca ...

  10. Android仿微信界面--使用Fragment实现(慕课网笔记)

    1 效果图  这里我们没有实现滑动切换view的功能 2 具体实现: 2.1 布局文件:top.xml, bottom.xml,tab01.xml,tab02.xml,tab03.xml,tab04. ...