Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

trrb30

#include<math.h>

#include<string.h>

#define vc 32767

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

int i,j,n,x,y;

int c[20][20],tr[20],s[20],chuaxet[20];

void khoitao();

void inra1();

void euler();

void xtoy();

void cayphu();

void taomang();

void ngaunhien();

//====================//

void main()

{

clrscr();

n=0;

taomang();

if(n!=0)

{

printf("\tMa tran sinh ra la:

");

inra1();

khoitao();

euler();

printf("\tNhap vao dinh suat phat X=");

scanf("%d",&x);

printf("\tNhap vao dinh dich Y=");

scanf("%d",&y);

xtoy();

cayphu();

}

getch();

}

void taomang()

{

printf("\tnhap n=");

scanf("%d",&n);

randomize();

for(i=1;i<=n;i++)

{

c[i][i]=0;

for(j=i+1;j<=n;j++)

c[i][j]=c[j][i]=random(99);

}

}

void khoitao()

{

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if (c[i][j]==0)

c[i][j]=vc;

for(i=1;i<=n;i++)

tr[i]=chuaxet[i]=0;

for(i=1;i<=n;i++)

s[i]=vc;

}

void inra1()

{

for(i=1;i<=n;i++)

{

for(j=1;j<=n;j++)

printf("%5d",c[i][j]);

printf("

");

}

}

void euler()

{

int bac,kt=1;

for(i=1;i<=n;i++)

{

bac=0;

for(j=1;j<=n;j++)

if(c[i][j]!=vc)

bac++;

if (((bac%2)==1)||(bac==0))

kt=0;

}

if (kt==1)

printf("

\tDo thi tren la do thi Euler

");

else

printf("

\tDo thi tren khong phai la do thi Euler

");

}

void xtoy()

{

int kt,k,b[20];

chuaxet[y]=1;s[y]=0;tr[y]=0;

do

{

kt=0;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

if ((chuaxet[j]==1)&&(c[i][j]!=vc))

{

if ((s[j]+c[i][j])<s[i])

{

s[i]=s[j]+c[i][j];

tr[i]=j;

chuaxet[i]=1;

kt=1;

}

}

}while(kt==1);

if(s[x]!=vc)

{

b[1]=x;k=1;

while(tr[b[k]]!=0)

{

k++;

b[k]=tr[b[k-1]];

}

printf("\tDuong di ngan nhat tu dinh %d --> %d la:

\t\t",x,y);

for(i=1;i<k;i++)

printf("%d -->",b[i]);

printf("%d

",b[k]);

printf("\t\tDo dai doan duong la:%d",s[x]);

}

else

{

printf("\tKhong ton tai duong di tu dinh %d --> %d

",x,y);

}

}

void cayphu()

{

int p=1,g[20][2],k,h,dodai,kt,min,u,cl;

for(i=1;i<=n;i++)

chuaxet[i]=0;

chuaxet[p]=1;k=1;

for(i=1;i<=n;i++)

if(p!=i)

{

s[i]=c[p][i];

tr[i]=p;

}

kt=0;h=0;cl=0;

while((kt==0)&&(cl==0))

{

min=vc;

for(i=1;i<=n;i++)

if((chuaxet[i]==0)&&(s[i]<=min))

{

min=s[i];

u=i;

}

k++;

chuaxet[u]=1;

h++;

g[h][1]=tr[u];

g[h][2]=u;

if (c[u][tr[u]]==vc) cl=1;

if(k==n)

{

printf("

\tCay khung nho nhat tim thay:");

if(cl==0)

{

kt=1;

dodai=0;

printf("

\t\t");

for(i=1;i<h;i++)

{

printf("(%d,%d);",g[i][1],g[i][2]);

dodai+=c[g[i][1]][g[i][2]];

}

printf("(%d,%d)

",g[h][1],g[h][2]);

dodai+=c[g[h][1]][g[h][2]];

printf("\t\tDo dai cay khung: %d",dodai);

}else

{

printf("

\t");

for(i=1;i<=30;i++)

printf("*");

printf("

");

printf("\t* Khong the tim duoc cay phu *");

printf("

\t");

for(i=1;i<=30;i++)

printf("*");

printf("

");

}

}else

{

for(i=1;i<=n;i++)

if((chuaxet[i]==0)&&(c[u][i]<s[i]))

{

s[i]=c[u][i];

tr[i]=u;

}

}

}

}

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: