?? cal-diameter.c
字號(hào):
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 7
main()
{
static int tag[N],diameter[N][N],p,q ,deg1[N],deg2[N],adjmatrix[N][N];
float sum;
int i,j,k,l,d;
adjmatrix[1][2]=adjmatrix[2][1]=1;
adjmatrix[3][2]=adjmatrix[2][3]=1;
adjmatrix[5][2]=adjmatrix[2][5]=1;
adjmatrix[3][4]=adjmatrix[4][3]=1;
adjmatrix[5][4]=adjmatrix[4][5]=1;
adjmatrix[5][6]=adjmatrix[6][5]=1;
sum=0;
for(l=1;l<N;l++)
{ q=1;
for(j=1;j<N;j++){tag[j]=deg1[j]=deg2[j]=0;}
p=1; deg1[1]=l; tag[l]=1; d=0; goto L2;
L1: p=k; for(j=1;j<=p;j++)deg1[j]=deg2[j];
L2: k=0; d++;
for(i=1;i<=p;i++)
{
for(j=1;j<N;j++)
{if(tag[j]==1)continue;
if(j==deg1[i])continue;
if(adjmatrix[deg1[i]][j]==0)continue;
if(adjmatrix[deg1[i]][j]==1)
{ k++;
deg2[k]=j;
q++;
tag[j]=1;
diameter[l][j]=d;
}
}
if(i==p&&k!=0) goto L1;
}
sum=sum+q; printf("the network is disconnected %d!\n",q);
}
if((2*sum)!=(N-1)*N) printf("the network is disconnected %f!\n",sum);
sum=0;
for(i=1;i<N;i++)
{for(j=1;j<N;j++){printf("%d ",diameter[i][j]); sum=sum+diameter[i][j]; }
printf("\n");
}
sum=sum/(N-1)/(N-2); printf("%f\n",sum);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -