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长春网赛)相关推荐

  1. hdu 5441 Travel(Kruskal+离线)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意: 给定N个顶点,M条边的一个无向图,Q个询问. 对于每个询问x,从a,b的路径上各边的最大 ...

  2. hdu 5439 Ponds(长春网络赛——拓扑排序+搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others)     ...

  3. 2015长春网络赛 —— B. Ponds (拓扑排序删点+DFS)

    题目描述 Description Betty owns a lot of ponds, some of them are connected with other ponds by pipes, an ...

  4. hdu5442(2015长春网络赛F题)

    题意: 给出一个字符串,只由'a'~'z'组成,字符串是一个首尾相接的串.我们要找到一个起点,顺时针或者逆时针的读这个串,找到字典序最大的读法,如果有多种,输出起点坐标小的那个,如果起点坐标一样,输出 ...

  5. hdu5446(2015长春网络赛J题)

    题意: 求C(n,m)%(p1*p2*......pk),其中,p1*p2*......pk都是素数. 思路: 不会...数论是渣,赛后知道是Lucas定理+中国剩余定理. 代码: #include& ...

  6. hdu5441(2015长春网络赛E题)

    题意: 给出一个n个点.m条边的无向图,边上有权值,有q组询问,每组询问给出一个数字x,我们要在图中找出'点对'的个数,这些'点对'(例如a,b)满足从a到b有一条路径经过的每一条边都要小于x,输出每 ...

  7. hdu5444(2015长春网络赛H题)

    题意: 给出一棵树的描述,这棵树构造出来,满足从右到左数值递增,根在最下面,然后有一些询问x,我们要输出从根走到x的路径,w:向左.e:向右. 思路: 建树的时候,首先第一个点一定是根,然后比根小的建 ...

  8. hdu5443(2015长春网络赛G题)

    题意: 一个数列,求从L到R的最大值. 思路: 不多说... 代码: #include<cstdio> #include<cstring>int a[20000];int ma ...

  9. hdu5438(2015长春网络赛B题)

    题意: 有n个池塘.m个管道,每个池塘有权值,m个管道用来连接池塘(无向边),我们要把度小于2的池塘删除,统计每个包含池塘数是奇数的连通分量的权值并输出. 思路: 拓扑排序之后,删点,然后dfs一遍就 ...

  10. hdu5437(2015长春网络赛A题)

    题意: 有一个party,会有n个人来,每个人都带着礼物来,礼物有权值,由于屋子的大小有限,所以他会选择k个时间来开门,在t时间让p个人进来,接下来有q组询问,每组询问有一个数字ni,让你输出第ni个 ...

最新文章

  1. Js 校验时间、比较时间 和转换时间格式
  2. WebSocket相关
  3. 第06讲:多路加速,了解多进程基本原理
  4. 12000+字Java反射,一起全面了解Java反射机制,为学习框架铺路
  5. notification源码分析_Ceilometer之notification agent代码分析
  6. 机器 – 程序 – 人 (2)
  7. pandas选取特定段
  8. 实现一个HTTP服务器的Demo
  9. 局域网中的几大分类,包含以太网,FDDI网,令牌环网,ATM网
  10. SPSS典型相关分析案例
  11. 2020年电子设计竞赛 B题-单相在线式不间断电源 分析与总结
  12. 软件测试工程师必备技能(初中高)
  13. 「学IT一定要看」一些学习的建议
  14. mac认证服务器无响应,无法连接认证服务器mac
  15. 邮件工具-MailUtil(发送邮件)
  16. Python 编程导论 Chapter 4 —— 函数、作用域与抽象
  17. VM启动centos出现Assuming drive cache: write through.../run/initramfs/rdsosreport.txt类似错误解决方案
  18. 声源定位与stm32示例
  19. avx2 fma_fma()函数以及C ++中的示例
  20. 叉乘和平行四边形面积

热门文章

  1. JWPlayer快速入门指南(中文)
  2. QA: c# IHttpFactory配置代理或者HttpClient配置代理
  3. 45. Use member function templates to accept all compatible types.
  4. 01.赋值运算符函数(C++实现)
  5. 中文只占一个字符_男人宠妻的三大表现,就算只占一个,你都是嫁对了人!
  6. 写bat脚本--2021年5月18日
  7. 求两个集合是否有交集 c语言_高中数学:集合与函数概念知识点汇总
  8. 八皇后问题-python描述
  9. java单元测试模拟输入_java – 单元测试:在定义模拟行为后调用...
  10. oracle 产看执行计划_ORACLE数据库查看执行计划的方法