arkadaşlar aşağıda verdiğim kod klasik kruskal algoritması, fakat anlamadığım şey ise çıktısı yani source 'u inceliyorum ve bildiğim kruskalı sorguluyorum çıktının mantığını hala anlayamadım. açıklayabilecek olan varmıgirdi-çıktı ss iResim Yükle - Hızlı Resimimagehttps://imgyukle.com/i/yQXEHH#include<stdio.h> #define MAX 30 typedef struct edge{ int u,v,w;}edge; typedef struct edgelist{ edge data[MAX]; int n;}edgelist; edgelist elist; int G[MAX][MAX],n;edgelist spanlist; void kruskal();int find(int belongs[],int vertexno);void union1(int belongs[],int c1,int c2);void sort();void print(); void main(){ int i,j,total_cost; printf("\nEnter number of vertices:"); scanf("%d",&n); printf("\nEnter the adjacency matrix:\n"); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&G[i][j]); kruskal(); print();} void kruskal(){ int belongs[MAX],i,j,cno1,cno2; elist.n=0; for(i=1;i<n;i++) for(j=0;j<i;j++) { if(G[i][j]!=0) { elist.data[elist.n].u=i; elist.data[elist.n].v=j; elist.data[elist.n].w=G[i][j]; elist.n++; } } sort(); for(i=0;i<n;i++) belongs[i]=i; spanlist.n=0; for(i=0;i<elist.n;i++) { cno1=find(belongs,elist.data[i].u); cno2=find(belongs,elist.data[i].v); if(cno1!=cno2) { spanlist.data[spanlist.n]=elist.data[i]; spanlist.n=spanlist.n+1; union1(belongs,cno1,cno2); } }} int find(int belongs[],int vertexno){ return(belongs[vertexno]);} void union1(int belongs[],int c1,int c2){ int i; for(i=0;i<n;i++) if(belongs[i]==c2) belongs[i]=c1;} void sort(){ int i,j; edge temp; for(i=1;i<elist.n;i++) for(j=0;j<elist.n-1;j++) if(elist.data[j].w>elist.data[j+1].w) { temp=elist.data[j]; elist.data[j]=elist.data[j+1]; elist.data[j+1]=temp; }} void print(){ int i,cost=0; for(i=0;i<spanlist.n;i++) { printf("\n%d\t%d\t%d",spanlist.data[i].u,spanlist.data[i].v,spanlist.data[i].w); cost=cost+spanlist.data[i].w; } printf("\n\nCost of the spanning tree=%d",cost);}Resim Yükle - Hızlı Resimimagehttps://imgyukle.com/i/yQXEHH