hdu 5441 Travel (2015长春网赛)
http://acm.hdu.edu.cn/showproblem.php?pid=5441
题目大意是给一个n个城市(点)m条路线(边)的双向的路线图,每条路线有时间值(带权图),然后q个询问,每个询问一个时间值
求不大于这个时间的可以连通的城市有多少种连法
比如样例中第一个询问6000,不大于6000时间值的连通城市有3,5.所以有3-->5,5-->3两种
第二个询问10000,符合条件的连通的城市有2,3,5,所以有2-->3,3-->2,2-->5,5-->2,3-->5,5-->3六种
利用结构体储存点与权值然后把权值排序,找出符合条件的城市点,利用并查集记录相连的点然后合并,整合路线
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int father[20001],num[20001]; 6 int a[20001]; 7 void lsy(int n) 8 { 9 for (int i=1;i<=n;i++) 10 { 11 father[i]=i; 12 num[i]=1; 13 } 14 } 15 struct point { 16 int x,y,z; 17 bool operator <(const point& q)const 18 { 19 return z<q.z; 20 } 21 }; 22 point yj[100001]; 23 struct node { 24 int w,id; 25 bool operator <(const node &q)const 26 { 27 return w<q.w; 28 } 29 }; 30 node yjj[20001]; 31 int _find(int x) 32 { 33 if (father[x]==x)return x; 34 father[x]=_find(father[x]); 35 return father[x]; 36 } 37 int main() 38 { 39 int t,n,m,q,i; 40 while (~scanf("%d",&t)) 41 { 42 while (t--) 43 { 44 scanf("%d %d %d",&n,&m,&q); 45 memset(a,0,sizeof(a)); 46 for (i=1;i<=m;i++) 47 scanf("%d %d %d",&yj[i].x,&yj[i].y,&yj[i].z); 48 sort(yj+1,yj+m+1); 49 lsy(n); 50 for (i=1;i<=q;i++) 51 { 52 scanf("%d",&yjj[i].w); 53 yjj[i].id=i; 54 } 55 sort(yjj+1,yjj+q+1); 56 int ans=0,j=1; 57 for (i =1;i<=q;i++) 58 { 59 while (j<=m&&yj[j].z<=yjj[i].w ) 60 { 61 int sx=_find(yj[j].x); 62 int sy=_find(yj[j].y); 63 j++; 64 if (sx==sy) continue; 65 ans+=(num[sx]+num[sy])*(num[sx]+num[sy]-1)-num[sx]*(num[sx]-1) - num[sy]*(num[sy]-1);//合并之后的关系 66 father[sx]=sy; 67 num[sy]+=num[sx]; 68 } 69 a[yjj[i].id]=ans; 70 } 71 for (i=1;i<=q;i++) 72 printf("%d\n",a[i]); 73 } 74 } 75 return 0; 76 }
转载于:https://www.cnblogs.com/JJCHEHEDA/p/4808074.html
hdu 5441 Travel (2015长春网赛)相关推荐
- hdu 5441 Travel(Kruskal+离线)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意: 给定N个顶点,M条边的一个无向图,Q个询问. 对于每个询问x,从a,b的路径上各边的最大 ...
- hdu 5439 Ponds(长春网络赛——拓扑排序+搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others) ...
- 2015长春网络赛 —— B. Ponds (拓扑排序删点+DFS)
题目描述 Description Betty owns a lot of ponds, some of them are connected with other ponds by pipes, an ...
- hdu5442(2015长春网络赛F题)
题意: 给出一个字符串,只由'a'~'z'组成,字符串是一个首尾相接的串.我们要找到一个起点,顺时针或者逆时针的读这个串,找到字典序最大的读法,如果有多种,输出起点坐标小的那个,如果起点坐标一样,输出 ...
- hdu5446(2015长春网络赛J题)
题意: 求C(n,m)%(p1*p2*......pk),其中,p1*p2*......pk都是素数. 思路: 不会...数论是渣,赛后知道是Lucas定理+中国剩余定理. 代码: #include& ...
- hdu5441(2015长春网络赛E题)
题意: 给出一个n个点.m条边的无向图,边上有权值,有q组询问,每组询问给出一个数字x,我们要在图中找出'点对'的个数,这些'点对'(例如a,b)满足从a到b有一条路径经过的每一条边都要小于x,输出每 ...
- hdu5444(2015长春网络赛H题)
题意: 给出一棵树的描述,这棵树构造出来,满足从右到左数值递增,根在最下面,然后有一些询问x,我们要输出从根走到x的路径,w:向左.e:向右. 思路: 建树的时候,首先第一个点一定是根,然后比根小的建 ...
- hdu5443(2015长春网络赛G题)
题意: 一个数列,求从L到R的最大值. 思路: 不多说... 代码: #include<cstdio> #include<cstring>int a[20000];int ma ...
- hdu5438(2015长春网络赛B题)
题意: 有n个池塘.m个管道,每个池塘有权值,m个管道用来连接池塘(无向边),我们要把度小于2的池塘删除,统计每个包含池塘数是奇数的连通分量的权值并输出. 思路: 拓扑排序之后,删点,然后dfs一遍就 ...
- hdu5437(2015长春网络赛A题)
题意: 有一个party,会有n个人来,每个人都带着礼物来,礼物有权值,由于屋子的大小有限,所以他会选择k个时间来开门,在t时间让p个人进来,接下来有q组询问,每组询问有一个数字ni,让你输出第ni个 ...
最新文章
- Js 校验时间、比较时间 和转换时间格式
- WebSocket相关
- 第06讲:多路加速,了解多进程基本原理
- 12000+字Java反射,一起全面了解Java反射机制,为学习框架铺路
- notification源码分析_Ceilometer之notification agent代码分析
- 机器 – 程序 – 人 (2)
- pandas选取特定段
- 实现一个HTTP服务器的Demo
- 局域网中的几大分类,包含以太网,FDDI网,令牌环网,ATM网
- SPSS典型相关分析案例
- 2020年电子设计竞赛 B题-单相在线式不间断电源 分析与总结
- 软件测试工程师必备技能(初中高)
- 「学IT一定要看」一些学习的建议
- mac认证服务器无响应,无法连接认证服务器mac
- 邮件工具-MailUtil(发送邮件)
- Python 编程导论 Chapter 4 —— 函数、作用域与抽象
- VM启动centos出现Assuming drive cache: write through.../run/initramfs/rdsosreport.txt类似错误解决方案
- 声源定位与stm32示例
- avx2 fma_fma()函数以及C ++中的示例
- 叉乘和平行四边形面积
热门文章
- JWPlayer快速入门指南(中文)
- QA: c# IHttpFactory配置代理或者HttpClient配置代理
- 45. Use member function templates to accept all compatible types.
- 01.赋值运算符函数(C++实现)
- 中文只占一个字符_男人宠妻的三大表现,就算只占一个,你都是嫁对了人!
- 写bat脚本--2021年5月18日
- 求两个集合是否有交集 c语言_高中数学:集合与函数概念知识点汇总
- 八皇后问题-python描述
- java单元测试模拟输入_java – 单元测试:在定义模拟行为后调用...
- oracle 产看执行计划_ORACLE数据库查看执行计划的方法