首页

文章

迪杰斯特拉 无向图 邻接表

发布网友 发布时间:2022-03-27 09:48

我来回答

3个回答

热心网友 时间:2022-03-27 11:17

我的数据读入是n个点,m条边,以下m行描述为 x 与 y之间有一条权值为z的边

#include<iostream>
using namespace std;
const int MAX=0xfffffff;
struct xyz
{int to,v;}map[101][101]={0};
int dis[101]={0},n,m,pre[101]={0},sum[101]={0},st,ed;
bool f[101]={0};
void init()
{
int i,j,x,y,z;
scanf("%d%d",&n,&m);
for( i=1;i<=100;i++)for(j=1;j<=100;j++)map[i][j].v=MAX;
for( i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
map[x][++sum[x]].to=y;
map[x][sum[x]].v=z;
map[y][++sum[y]].to=x;
map[y][sum[y]].v=z;
}
cin>>st>>ed;
}
void out(int n)
{
if(pre[n]==0){printf("%d ",n); return ;}
out(pre[n]);
printf("%d ",n);
}
void dijsktra(int st)
{
int i,j,Min,k,t;
f[st]=1;
for( i=1;i<=n;i++)dis[i]=MAX;
for( i=1;i<=sum[st];i++){ t=map[st][i].to; dis[t]=map[st][i].v; }
for( i=1;i<=n;i++)
{
Min=MAX;
k=0;
for(j=1;j<=n;j++)
if(!f[j]&&dis[j]<Min){Min=dis[j];k=j;}
f[k]=1;
for( j=1;j<=sum[k];j++)
{
t=map[k][j].to;
if( !f[t]&&dis[k]+map[k][j].v<dis[t])
{
dis[t]=dis[k]+map[k][j].v;
pre[t]=k;
}
}
}
printf("%d\n",dis[ed]);
printf("%d ",st);out(ed);
}
int main()
{
init();
dijsktra(st);
return 0;
}

热心网友 时间:2022-03-27 12:35

include<iostream>
#include<cmath>
using namespace std;
const int maxint=0xfffffff;
struct xyz
{int x,y;double d;}a[101];
int s,t,f[101]={0},n,m;
double map[101][101]={0},ds[101];
double cal(int x,int y)
{return sqrt((a[x].x-a[y].x)*(a[x].x-a[y].x)+(a[x].y-a[y].y)*(a[x].y-a[y].y));}
void init()
{
int i,x,y;
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);
scanf("%d",&m);
for(i=1;i<=m;i++){scanf("%d%d",&x,&y);map[x][y]=map[y][x]=cal(x,y);}
scanf("%d%d",&s,&t);
}
void dijsktra()
{
int i,j,minn,k;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(map[i][j]==0)map[i][j]=maxint;
for(i=1;i<=n;i++)ds[i]=map[s][i];
for(i=1;i<=n;i++)
{minn=maxint;
k=0;
for(j=1;j<=n;j++)
if(!f[j]&&ds[j]<minn){minn=ds[j];k=j;}
f[k]=1;
for(j=1;j<=n;j++)
if(!f[j]&&ds[k]+map[k][j]<ds[j])ds[j]=ds[k]+map[k][j];
}
printf("%.2lf",ds[t]);
}
int main()
{
init();
dijsktra();
return 0;
}

热心网友 时间:2022-03-27 14:10

http://e.codepub.com/2009/0603/5414.php

这个很详细
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 无向图的邻接表 数据结构,如何根据邻接表画深度,广度优先生成树? 为什么这张图的邻接表画出来是这样?是怎么画的,求详细过程! 在C语言中编程实现建立无向图的邻接表,输出某个点的邻接点~! 数据结构类:画出无向图(下附)的邻接矩阵和邻接表示意图,并写出每个顶点的度! 对于如下图所示的无向图,请画出: (1)邻接矩阵 (2)邻接表 图的邻接表怎么画 计算机C语言题目,已知赋权无向图,画邻接矩阵和邻接表。还有最小支撑树? 带权无向图的邻接表怎么画 无向带权图的邻接表怎么画 vivoy50手机有ar测量功能吗? vivonex有测距仪吗? iqooneo5有测距仪吗 校准距离感应器在哪里vivo vivo手机怎么测量身高 用我的手机怎么测量距离 vivo手机测量尺在哪 Java EE的基本学习路线是什么 Zuul配置项中sensitiveHeaders和ignoredHeaders的不同 有哪些Java web里的并发框架,都有哪些? 用邻接表建立无向图,建立过程中顶点和边结点到底是怎么指向? 最好用图片画出来 指针的指向? 谢谢 画出图的邻接矩阵和邻接表 图的邻接表 这张邻接表的图该怎么画 无向图的邻接表 表结点个数为m 求图中的边数 设计算法,将一个无向图的邻接矩阵转换为邻接表.求大神。这是数据结构里的问题。 数据结构:图,邻接表中,无向图的每个顶点的单链表平均长度为2e/n,怎么算出来的? 无向连通图的邻接表的存储 无向图采用邻接表存储结构,编写算法输出图中各连通分量的节点序列 WAN端口有什么作用 wan端口是什么,有什么用 WAN端口和LAN端口有什么区别? 路由器的wan端口到底有什么用 WAN接口是什么? 什么是WAN端口 路由器wan口作用有什么 详解无线路由器WAN,LAN口的作用及怎么接网线 wan端口是什么,有什么用? WAN端口是作什么用的? 苹果6的16g内存不够用怎么办
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com