zoukankan      html  css  js  c++  java
  • 还是畅通工程

    一看到这题总是以为要用dijkstra算法,但是根据描述怎么想都不对,然后去搜了一下思路,应该还是并查集,然后定义一个结构体,思路就是排序,然后查找,合并,但是怎么说总感觉很多地方很奇怪,自己写的,那个排序函数也不清楚,然后就去看一了一下,之后就直接给代码了。

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    struct point{
        int x,y;
        int s;
    }num[5008];
    int flag[102];
    int cmp(const void *a,const void *b)
    {
        struct point *c,*d;
        c=(struct point *)a;
        d=(struct point *)b;
        return c->s-d->s;
    }
    int find(int x)
    {
        if(x==flag[x])
            return x;
        flag[x]=find(flag[x]);
        return flag[x];
    }
    int main()
    {
        int n,i,sum,ra,rb;
        while(scanf("%d",&n),n)
        {
            for(i=0;i<=n;i++)
                flag[i]=i;
            for(i=0;i<n*(n-1)/2;i++)
                scanf("%d%d%d",&num[i].x,&num[i].y,&num[i].s);
            qsort(num,n*(n-1)/2,sizeof(num[0]),cmp);
            sum=0;
            for(i=0;i<n*(n-1)/2;i++)
            {
                ra=find(num[i].x);
                rb=find(num[i].y);
                if(ra==rb)continue;
                else {
                    sum+=num[i].s;
                    if(ra<rb)
                        flag[rb]=ra;
                    else flag[ra]=rb;
                }
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
    

      

  • 相关阅读:
    新型肺炎实时动态
    大学排名数据爬取
    python BeautifulSoup基本用法
    爬虫爬取
    人口普查系统--信息查找
    人口普查系统--信息删除
    人口普查系统--信息修改
    人口普查系统--信息登记
    期中考试题目
    期中考试前准备--数据库查找代码
  • 原文地址:https://www.cnblogs.com/yintoki/p/5702786.html
Copyright © 2011-2022 走看看