永发信息网

C++结构体加二维数组初始化问题(图的最短路径)

答案:2  悬赏:80  手机版
解决时间 2021-02-26 06:49
#include
using namespace std;
#define MaxValue Int_Max
const int NumEdges = 15;
const int NumVertices = 6;
typedef char VertexData;
typedef int EdgeData;
typedef struct
{
VertexData vexList[NumVertices];
EdgeData Edge[NumVertices][NumVertices];
int n;
int e;
} MTGraph;

void main()
{
MTGraph R;
R.n=6;
R.Edge[NumVertices][NumVertices]= {{0 ,2 ,3 ,4 ,5 ,4 },
{2 ,0 ,3 ,1 ,99,2 },
{3 ,3 ,0 ,4 ,5 ,2 },
{4 ,1 ,4 ,0 ,3 ,1 },
{5 ,99,5 ,3 ,0 ,3 },
{4 ,2 ,2 ,1 ,3 ,0 }};

}
这样初始化数组哪里出问题了?
还有,有谁有最短路径的完整程序 C的和C++的都可以
最佳答案
都是原创。
最短路SPFA算法:
#define oo 10000000
#include
#include
using namespace std;
ifstream fin("sssp.in");
ofstream fout("sssp.out");

int q[1000000];
int map[10001][10001];
int dist[10001],nin[10001];
bool isin[10001],vis;

int main()
{
int n,m,s,a,b,c,i,j,h=1,t=1,now;

memset(isin,false,sizeof(isin));
memset(nin,0,sizeof(nin));
memset(q,0,sizeof(q));
fin >> n >> m >> s;
for(i=1;i<=n;i++)
{
dist[i]=oo;
for(j=1;j<=n;j++)
map[i][j]=oo;
}
for(i=1;i<=m;i++)
{
fin >> a >> b >> c;
map[a][b]=min(map[a][b],c);
//map[b][a]=min(map[b][a],c);
}
dist[s]=0;
q[1]=s;
isin[s]=true;
nin[s]++;
do
{
now=q[h];
isin[now]=false;
for(i=1;i<=n;i++)
if(dist[now]+map[now][i] {
dist[i]=dist[now]+map[now][i];
if(!isin[i])
{
q[++t]=i;
isin[i]=true;
nin[i]++;
}

if(nin[i]>n)
{
fout << -1 << endl;
return 0;
}
}
h++;
}while(h<=t);
for(i=1;i<=n;i++)
if(dist[i]==oo)
fout << "NoPath" << endl;
else
fout << dist[i] << endl;
return 0;
}

最短路Dijkstra算法。

//The Shortest Path (Dijkstra)
#include

using namespace std;

int n,graph[1001][1001];
const int MAX=300000000;

void Dijkstra(int vstart)
{
int i,k=n-1,minweight,minv;
bool visited[1001]={false};
visited[vstart]=true;
while(k)
{
minweight=MAX;
for(i=1;i<=n;i++)
if(!visited[i]&&graph[vstart][i] {
minv=i;
minweight=graph[vstart][i];
}
visited[minv]=true;
for(i=1;i<=n;i++)
if(!visited[i]&&graph[vstart][minv]+graph[minv][i] k--;
}
}

int main()
{
ifstream fin("Dijkstra.in");
ofstream fout("Dijkstra.out");
int i,j,vstart;
fin>>n>>vstart;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
fin>>graph[i][j];
if(i==j) continue;
if(graph[i][j]==0) graph[i][j]=MAX;
}
Dijkstra(vstart);
fout< for(i=2;i<=n;i++) fout<<' '< fout< return 0;
}
全部回答
[ol][*]#include[i][*]using namespace std;[*][*]struct cell[*]{[*]int num; [*]bool per; [*]};[*]const int size=2;[*]void playgame(cell board[size][size], int numtowers)[*]{[*]for(int i=0;i
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
睡午觉梦见很多蛇,有活的有死的,各式各样的
家具灯具商场地址在什么地方,想过去办事
成语始之未然是什么意思?
老公闲我长胡子还说我底下大这是为什么
桂圆肉上火吗
我的大货车与班车发生了交通事故,而且我的保
1 左膝关节外侧半月板后角撕裂;2左膝关节内
潜水艇怎么么样停在水中?
雅乐居装饰地址在什么地方,想过去办事
各位,我快急死了。本人长得挺帅的,今天去永
关于我特别的一天的小学英语50字短文
今稻洲粮食加工厂在哪里啊,我有事要去这个地
【妈妈带了120元去买大米,每千克大米3元,妈妈
多玩电脑我的世界 就是在游戏里面按一个什么
请问,我已经添加了音乐播放器,但为什么首页
推荐资讯
品羊源在什么地方啊,我要过去处理事情
请专业人士给我讲解一下,动漫制作公司里面的
情人关系,分手后女的让男的删掉微信,男的不
北京离秦皇岛多少小时
北奔重卡站自行车租赁点地址在哪,我要去那里
黄金镯子能弯吗!!!!!!!!
私人殿堂半永久地址在哪,我要去那里办事,
怎么看淘宝的店铺介绍
杨角庄在哪里啊,我有事要去这个地方
大李家文化大院地址有知道的么?有点事想过去
如图,下列说法正确的是A. 秦始皇创造小篆,
【sin15度等于多少】sin15度等于多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?