杭电3371Connect the Cities
祖先没赋值,纠结了好久,长个教训
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相关推荐
- 杭电OJ分类题目(4)-Graph
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(4) HDU Graph Theory - U ...
- 2022“杭电杯”中国大学生算法设计超级联赛 (2) 杭电多校第二场
题目 1001 Static Query on Tree AC代码 1002 C++ to Python AC代码 1003 Copy AC代码 1005 Slayers Come AC代码 1007 ...
- 【杭电ACM】1097 A hard puzzle
[杭电ACM]1097 A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...
- 【ACM】杭电OJ 1106 函数atoi
函数atoi是把字符串转化成整数的函数,头文件为 #include "stdlib.h" e.g. 运行环境:Dev-C++ 5.11 杭电1106 调用了sort函数,运行的时间 ...
- 【ACM】杭电OJ 2037
题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...
- 【ACM】杭电OJ 2020(排序)
题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数. 下面是选择排序: #include <stdio.h> #include <math.h> in ...
- 【ACM】杭电OJ 2018
题目链接:杭电OJ 2018 从n>4开始,每一年的牛的数量=前一年的牛的数量+三年前的牛的数量 问:为什么是三年前? 答:假设三年前有一头小牛出生,出生的那一年即为第一年,到了第四年,即三年后 ...
- 【ACM】杭电OJ 1005
题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int ...
- 【ACM】杭电OJ 1004
题目链接:杭电OJ 1004 运行环境:Dev-C++ 5.11 思路: 先把先把num数组全部赋值为1:第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的nu ...
最新文章
- P1214 等差数列
- js中的toString方法
- AMD宣布350亿美元收购赛灵思,CPU、GPU、FPGA全凑齐,中国握有否决权
- php webstorm,webstorm和phpstorm的区别
- 从零开始学 Web 之 BOM(四)client系列
- [LeetCode] Wildcard Matching 题解
- linux系统虚拟化测试,网络性能与磁盘测试 - Linux虚拟化性能PK:Ubuntu系统6大版本_Linux新闻_Linux公社-Linux系统门户网站...
- python使用xlrd读取xlsx文件_$ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档...
- 大数据之-Hadoop源码编译_源码编译的意义---大数据之hadoop工作笔记0044
- Linux线程管理必备:互斥量与条件变量
- SANXIN-B01开发板verilog教程V3电子版
- 数字格式化类NumberFormat
- [RK3288][Android6.0] 网络服务Netd初始化流程小结
- 4家运营商、17家通信企业这样回应5G牌照发放
- ansys linux安装包_ubuntu安装ANSYS17.2全过程
- 读《TOWARDS EXPRESSIVE SPEAKING STYLE MODELLING WITH HIERARCHICAL CONTEXT INFORMATION FOR MANDARIN》
- 苹果vs剪辑下载_好用的短视频制作与剪辑APP工具盘点
- rm ,rm -rf , rm -f 以及rm 命令的其他参数命令
- 商务谈判中有哪些谈判技巧?
- 苏菲兔子和魔法师小麦
热门文章
- python book.save_2.3.1. 将二进制数据存为文件:saveBinDataToFile
- python图片二进制流转换成图片_微信如何将图片转换成word文字
- mysql语句大全 新浪博客_MySQL语句入门
- linux两种方式改变文件权限,Linux更改文件权限的两种方式
- 差分隐私 机器学习_满足差分隐私的经验误差最小化方法
- python显示图像文件要放在哪儿_opencv显示图像要把图像放在哪里
- android service是单例么,android 使用单例还是service?
- 制备pdms膜的方法_四川大学杨伟团队JMCC:实现柔性压阻式压力传感器的规模化制备...
- mysql 编译_mysql 5.7 编译——VS2017
- 手摸手,带你用 vue 动画实现原生 app 切换效果,丝滑般的体验