数据结构 图,运行超时

#include <stdio.h>
#define maxn 1000
#define maxm 100000

typedef struct node  //路径节点
{
    int x, y, t;
}node;
node road[maxm];  //路径
int f[1005];  //村庄

int find(int x)
{
    return (f[x]==x)?x:(f[x]=find(f[x]));
}

void sort(int m)  //根据t,对road从小到大进行排列
{
    int i, j, min;
    node k;
    for(i=0;i<m;i++)
    {
        min=i;
        for(j=i+1;j<m;j++)
        {
            if(road[min].t>road[j].t)
            {
                min=j;
            }
        }
        if(min!=i)
        {
            k=road[i];
            road[i]=road[min];
            road[min]=k;
        }
    }
}

void Create(int n, int m)
{
    int i, j;
    for(int i=1;i<=n;i++)    //村庄初始化,从1开始,f【0】无效
    {
        f[i]=i;
    }
    for(i=0;i<m;i++)
    {
        scanf("%d%d%d",&road[i].x,&road[i].y,&road[i].t);
    }
    sort(m);
}

void main()
{
    int n, m;
    scanf("%d%d",&n,&m);
    Create(n, m);
    int t_min=0,c=0;
    for (int i=0;i<m;i++)
    {
        int p1;
        int p2;
        p1=road[i].x;
        p2=road[i].y;
        int f1;
        int f2;
        f1=find(p1);
        f2=find(p2);
        if(f1!=f2)
        {
            c++;
            t_min=road[i].t;
            f[f1]=f2;
        }
    }
    if (c!=n-1)
        printf("-1");
    else
        printf("%d",t_min);
    return 0;
}

看看是不是死循环了
https://www.jianshu.com/p/bce71b2bdbc8