text1.txt

来自「一个简单的Bellman_and_Wallshall算法的实现。只是和大家交流一」· 文本 代码 · 共 56 行

TXT
56
字号
#include<stdio.h>

#define max 10000;
#define NIL 00;

struct edge
{
	int start;
	int end;
	int weight;
};

main()
{
	int i;
	int num;
	int d[10];
	int p[10];
	struct edge gra[10];
	for(i=0;i<10;i++)
	{
		d[i]=max;
		p[i]=NIL;
	}
	d[0]=0;//该图的原点即为0点
	for(i=0;i<10;i++)
		gra[i].start=gra[i].end=gra[i].weight=0;
	printf("\n  请注意!本程序可以处理10条边的有向图\n");
	printf("\n  (程序默认所输入的第一个点为图的原点)\n");
	printf("\n  请输入图中结点的个数:");
	scanf("%d",&num);
	printf("\n  请按照:起始点,权值,终止点的顺序输入图的信息\n");
	for(i=0;i<10;i++)
		scanf("%d%d%d",&gra[i].start,&gra[i].weight,&gra[i].end);
	for(i=0;i<10;i++)
	{
		if(d[gra[i].end]>d[gra[i].start]+gra[i].weight)
		{
			d[gra[i].end]=d[gra[i].start]+gra[i].weight;
			p[gra[i].end]=gra[i].start;
		}
	}
	for(i=0;i<10;i++)
	{
		if(d[gra[i].end]>d[gra[i].start]+gra[i].weight)
		{
			printf("\n  图的数据不合适,第%d条边处出现了负环,请仔细检查!\n",i);
			exit(0);
		}
	}
	for(i=0;i<num;i++)
		printf("  第%d个结点到原点的最短路径的值是%d\n",i,d[i]); 
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?