• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: dijkstra  c  代码  

资源简介

如标题所示,一个dijkstra的c代码,标准输入输出

资源截图

代码片段和文件信息

#include
#include
#define MAXINT 32767

int arr[15][15];
int rec[15];

void init()
{
int i j;
int tx ty t;
FILE *in;
in = fopen(“test.in“ “r“);
for (i=0; i<15; i++)
{
for (j=0; j<15; j++)
{
arr[i][j] = MAXINT;
}
arr[i][i] = 0;
}
for (i=0; i<30; i++)
{
fscanf(in “%d %d %d“ &tx &ty &t);
arr[tx][ty] = t;
arr[ty][tx] = t;
}
}

void dijkstra()
{
int i j k;
int visit[50] = {0};
int min minj;
for (i=1; i<=10; i++)
{
rec[i] = arr[1][i];
}
visit[1] = 1;
for (i=1; i<=10; i++)
{
min = MAXINT;
for (j=1; j<=10; j++)
{
if (rec[j] < min && visit[j] != 1)
{
min = rec[j]; //这里是一个相当容易错的地方!!!对算法的理解要透彻! 
minj = j;
}
}
visit[minj] = 1;
if (min == MAXINT)
{
return;
}
for (j=1; j<=10; j++)
{
if (rec[minj] + arr[minj][j] < rec[j] && visit[j] == 0 && minj != j)
{
rec[j] = rec[minj] + arr[minj][j];
}
}
}
}

void Disp()
{
int i;
for (i=1; i<=10; i++)
{
printf(“%d “ rec[i]);
}
printf(“\n“);
}

int main()
{
init();
dijkstra();
Disp();
getch();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      17614  2009-08-13 08:02  test.exe

     文件        275  2009-08-10 20:06  test.in

     文件       1187  2009-08-14 08:30  test.c

----------- ---------  ---------- -----  ----

                19076                    3


评论

共有 条评论