warshall.c

来自「minix软件源代码」· C语言 代码 · 共 83 行

C
83
字号
#include "defs.h"transitive_closure(R, n)unsigned *R;int n;{    register int rowsize;    register unsigned i;    register unsigned *rowj;    register unsigned *rp;    register unsigned *rend;    register unsigned *ccol;    register unsigned *relend;    register unsigned *cword;    register unsigned *rowi;    rowsize = WORDSIZE(n);    relend = R + n*rowsize;    cword = R;    i = 0;    rowi = R;    while (rowi < relend)    {	ccol = cword;	rowj = R;	while (rowj < relend)	{	    if (*ccol & (1 << i))	    {		rp = rowi;		rend = rowj + rowsize;		while (rowj < rend)		    *rowj++ |= *rp++;	    }	    else	    {		rowj += rowsize;	    }	    ccol += rowsize;	}	if (++i >= BITS_PER_WORD)	{	    i = 0;	    cword++;	}	rowi += rowsize;    }}reflexive_transitive_closure(R, n)unsigned *R;int n;{    register int rowsize;    register unsigned i;    register unsigned *rp;    register unsigned *relend;    transitive_closure(R, n);    rowsize = WORDSIZE(n);    relend = R + n*rowsize;    i = 0;    rp = R;    while (rp < relend)    {	*rp |= (1 << i);	if (++i >= BITS_PER_WORD)	{	    i = 0;	    rp++;	}	rp += rowsize;    }}

⌨️ 快捷键说明

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