祖先没赋值,纠结了好久,长个教训

View Code

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 int n;
 6
 7 int set[510];
 8 int f[510],a[510],b[510];
 9 struct PP
10 {
11     int u,v;
12     int pri;
13 }d[30003];
14 int cmp(const void *a,const void *b)
15 {
16     struct PP *c,*d;
17     c=(struct PP*)a;
18     d=(struct PP*)b;
19     return c->pri-d->pri;
20 }
21 int find(int x)
22 {
23    if(x==set[x])
24        return x;
25    if(x!=set[x])
26        set[x]=find(set[x]);
27
28 }
29 int main()
30 {
31     int i,j,k,m,t,l;
32     int x,y,z,dis;
33     scanf("%d",&l);
34     while(l--)
35     {
36         scanf("%d%d%d",&n,&m,&t);
37         for(i=1;i<=n;i++)
38         {
39             set[i]=i;
40         }
41         k=0;
42         for(i=1;i<=m;i++)
43         {
44             scanf("%d%d%d",&x,&y,&z);
45             d[k].u=x;
46             d[k].v=y;
47             d[k].pri=z;
48             k++;
49         }
50         int p,q;
51         for(i=1;i<=t;i++)
52         {
53             scanf("%d",&dis);
54            scanf("%d",&p);
55            p=find(p);//必须将其祖先赋值
56             for(j=1;j<dis;j++)
57             {
58                 scanf("%d",&q);
59                 set[find(q)]=set[p];//让他们的祖先值一致
60             }
61
62         }
63         qsort(d,k,sizeof(d[0]),cmp);
64         int sum=0;
65         int f1,f2,c,t;
66         for(i=0;i<k;i++)
67         {
68             c=d[i].u;
69             t=d[i].v;
70             f1=find(c);
71             f2=find(t);
72             if(f1!=f2)//祖先不一样了,将其加上
73             {
74                 sum+=d[i].pri;
75                 set[f1]=f2;
76             }
77         }
78         int h=0;
79         for(i=1;i<=n;i++)
80             if(set[i]==i)
81                 h++;
82             if(h==1)
83         printf("%d\n",sum);
84             else
85                 printf("-1\n");
86     }
87     return 0;
88 }

转载于:https://www.cnblogs.com/zlyblog/archive/2012/07/31/2616497.html

杭电3371Connect the Cities相关推荐

  1. 杭电OJ分类题目(4)-Graph

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...

  2. 2022“杭电杯”中国大学生算法设计超级联赛 (2) 杭电多校第二场

    题目 1001 Static Query on Tree AC代码 1002 C++ to Python AC代码 1003 Copy AC代码 1005 Slayers Come AC代码 1007 ...

  3. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

  4. 【ACM】杭电OJ 1106 函数atoi

    函数atoi是把字符串转化成整数的函数,头文件为 #include "stdlib.h" e.g. 运行环境:Dev-C++ 5.11 杭电1106 调用了sort函数,运行的时间 ...

  5. 【ACM】杭电OJ 2037

    题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...

  6. 【ACM】杭电OJ 2020(排序)

    题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...

  7. 【ACM】杭电OJ 2018

    题目链接:杭电OJ 2018 从n>4开始,每一年的牛的数量=前一年的牛的数量+三年前的牛的数量 问:为什么是三年前? 答:假设三年前有一头小牛出生,出生的那一年即为第一年,到了第四年,即三年后 ...

  8. 【ACM】杭电OJ 1005

     题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int ...

  9. 【ACM】杭电OJ 1004

     题目链接:杭电OJ 1004 运行环境:Dev-C++ 5.11 思路: 先把先把num数组全部赋值为1:第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的nu ...

最新文章

  1. P1214 等差数列
  2. js中的toString方法
  3. AMD宣布350亿美元收购赛灵思,CPU、GPU、FPGA全凑齐,中国握有否决权
  4. php webstorm,webstorm和phpstorm的区别
  5. 从零开始学 Web 之 BOM(四)client系列
  6. [LeetCode] Wildcard Matching 题解
  7. linux系统虚拟化测试,网络性能与磁盘测试 - Linux虚拟化性能PK:Ubuntu系统6大版本_Linux新闻_Linux公社-Linux系统门户网站...
  8. python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
  9. 大数据之-Hadoop源码编译_源码编译的意义---大数据之hadoop工作笔记0044
  10. Linux线程管理必备:互斥量与条件变量
  11. SANXIN-B01开发板verilog教程V3电子版
  12. 数字格式化类NumberFormat
  13. [RK3288][Android6.0] 网络服务Netd初始化流程小结
  14. 4家运营商、17家通信企业这样回应5G牌照发放
  15. ansys linux安装包_ubuntu安装ANSYS17.2全过程
  16. 读《TOWARDS EXPRESSIVE SPEAKING STYLE MODELLING WITH HIERARCHICAL CONTEXT INFORMATION FOR MANDARIN》
  17. 苹果vs剪辑下载_好用的短视频制作与剪辑APP工具盘点
  18. rm ,rm -rf , rm -f 以及rm 命令的其他参数命令
  19. 商务谈判中有哪些谈判技巧?
  20. 苏菲兔子和魔法师小麦

热门文章

  1. python book.save_2.3.1. 将二进制数据存为文件:saveBinDataToFile
  2. python图片二进制流转换成图片_微信如何将图片转换成word文字
  3. mysql语句大全 新浪博客_MySQL语句入门
  4. linux两种方式改变文件权限,Linux更改文件权限的两种方式
  5. 差分隐私 机器学习_满足差分隐私的经验误差最小化方法
  6. python显示图像文件要放在哪儿_opencv显示图像要把图像放在哪里
  7. android service是单例么,android 使用单例还是service?
  8. 制备pdms膜的方法_四川大学杨伟团队JMCC:实现柔性压阻式压力传感器的规模化制备...
  9. mysql 编译_mysql 5.7 编译——VS2017
  10. 手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验