C programming

Tuesday, January 13, 2009

#include #define INF 32000 void main() { FILE *fp,*fo; int arr[15][15],n,edge,i,j,a,b,c; int tree[10],E[15][5],t[10][5],k=1,l,mincost=0; fp=freopen("c:\\work\\kruskal.in","r",stdin); fo=freopen("c:\\work\\kruskal.out","w",stdout); scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j) arr[i][j]=0; else arr[i][j]=INF; } } scanf("%d",&edge); for(i=1;i<=edge;i++) { scanf("%d%d%d",&a,&b,&c); E[i][1]=a;E[i][2]=b;E[i][3]=c; arr[a][b]=c; arr[b][a]=c; } /* for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%6d",arr[i][j]); printf("\n"); }*/ for(i=1;i<=n;i++) tree[i]=i; for(i=1;i<=edge;i++) { for(j=i+1;j<=edge;j++) { if(E[i][3]>E[j][3]) { int tem2=E[i][3]; int tem1=E[i][2]; int tem=E[i][1]; E[i][3]=E[j][3]; E[i][2]=E[j][2]; E[i][1]=E[j][1]; E[j][3]=tem2; E[j][2]=tem1; E[j][1]=tem; } } } int op=n+1; for(i=1;i<=edge;i++) { int an=tree[E[i][1]]; int bn=tree[E[i][2]]; if(tree[E[i][1]]!=tree[E[i][2]]) { for(j=1;j<=n;j++) if((an==tree[j])||(bn==tree[j])) tree[j]=op; tree[E[i][1]]=op; tree[E[i][2]]=op; mincost=mincost+E[i][3]; t[k][1]=E[i][1]; t[k][2]=E[i][2]; k++; op++; } } printf("The node && edge value of spanning Tree=\n"); for(i=1;i { printf("%d , %d=%d",t[i][1],t[i][2],arr[t[i][1]][t[i][2]]); printf("\n"); } printf("The minimum cost= %d",mincost); }

0 comments:

Visitors

PlugIn.ws - Free Hit Counter, Web Site Statistics, Traffic Analysis

  © Blogger template Leaving by Ourblogtemplates.com 2008

Back to TOP