Minimum Spanning Tree with Kruskal's algorithm.

//Spanning tree;
#include<stdio.h>
uniquedata(int p,int q,int parent[])
{
    if(p!=q)
    {
        parent[q]=p;
        return 1;
    }
    return 0;
}
searchparent(int i,int parent[])
{
    while(parent[i]!=-1)
        {
            i=parent[i];

        }
    return i;
}
main()
{
    int size,i,j,mini,minj,k=1,mincost=0,total=0,p,q;
    printf("\nEnter the number of elements in graph:");
    scanf("%d",&size);
    char name[size][10];
    int graph[size][size],parent[size];

    //input zone;
    printf("\nEnter the elements?\n");
    for(i=0;i<size;i++)
        scanf("%s",&name[i]);

    printf("\nEnter the graph?\n");
    for(i=0;i<size;i++)
        {
            for(j=0;j<size;j++)
                {
                    scanf("%d",&graph[i][j]);

                    if(graph[i][j]==0)
                        graph[i][j]=999;

                }
                parent[i]=-1;
        }

    //Processing unit;
    while(k<size)
    {
        mini=0;
        minj=0;
        for(i=0;i<size;i++)
            {
                for(j=0;j<size;j++)
                    {
                        if(graph[i][j]<graph[mini][minj])
                        {
                            mini=i;
                            minj=j;
                            mincost=graph[i][j];
                        }
                    }
            }

            p=searchparent(mini,parent);
            q=searchparent(minj,parent);
            if(uniquedata(p,q,parent))
            {
                printf("\n%d-edge (%s,%s) =%d\n",k++,name[mini],name[minj],mincost);
                total+=mincost;
            }
             graph[mini][minj]=999;
             graph[minj][mini]=999;

    }
    printf("\nTotal minimum cost=%d.\n",total);
}


OUTPUT:-
-kkmohanta