ARookie1234 2020-05-09 11:24 采纳率: 100%
浏览 208
已结题

数据结构 图,运行超时

#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;
}
  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2020-05-09 11:39
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献