Example #1
0
int kruskal()
{
	int i,j,k;
	for(k=0;k<m;k++){
		i=myfind(nodes[k].i);
		j=myfind(nodes[k].j);
		if(i!=j){
			unionij(i,j);
			ans+=nodes[k].value;
		}
	}
	if(ans>total)return 0;
	return 1;
}
Example #2
0
void kruskal(int n,int cost[10][10],int r[10])
 {
   int count=0,select[10][2],k=0;
   int sum=0,min,i,j,u,v;
   while(count<n-1)
   {
     min=999;
     for(i=1;i<=n;i++)
     {
       for(j=1;j<=n;j++)
       {
         if(min>cost[i][j]&&cost[i][j]!=0)
         {
         min=cost[i][j];
         u=i;
         v=j;
         }
        }
      }
     i=find(u,r);
     j=find(v,r);
     if(i!=j)
     {
     select[k][0]=u;
     select[k][1]=v;
     count++;
     k++;
     sum=sum+cost[u][v];
     unionij(i,j,r,n);
     }
     cost[u][v]=cost[v][u]=999;
     }
     if(sum<999)
     {
        printf("spannig tree exist\n");
        printf("the sum of cost is%d\n",sum);
        printf("the edges are\n");
        for(i=0;i<n-1;i++)
        {

           printf("\t%d->%d\n",select[i][0],select[i][1]);
        }
      }
      else
      printf("spannig tree does not exist");
  }
int kruskal()
{
    int k=0,i,j,ii,ans=0;
    inti();
    for(ii=0;ii<m;ii++){
           if(k==n-1)break;
           i=find(nodes[ii].x);
           j=find(nodes[ii].y);
           if(i!=j){
                    xx[k]=nodes[ii].x;
                    yy[k++]=nodes[ii].y;
                    if(nodes[ii].len>ans)ans=nodes[ii].len;
                    unionij(i,j);
           }                   
    }
    return ans;
}