HDU 3938
并查集的离线算法。
题意是大坑。理解为寻找两点之间所有路径中的最长的边的值小于输入的值的点对的个数。
直接来代码。
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct ab
{
int a,b,c;
};
int n;
struct ab poi[];
struct cd
{
int id,num,cc;
};
struct cd li[];
int me[];
int numb[];
bool cmp1(struct ab a,struct ab b)
{
return a.c<b.c;
}
bool cmp2(struct cd a,struct cd b)
{
return a.id<b.id;
}
bool cmp3(struct cd a,struct cd b)
{
return a.num<b.num;
}
void link(int a,int b)
{
me[b]=a;
numb[a]+=numb[b];
}
int findme(int a)
{
if(a!=me[a])
return me[a]=findme(me[a]);
return me[a];
}
int main()
{
int m,q,i,j,k,ans,tmpa,tmpb;
while(scanf("%d%d%d",&n,&m,&q)!=EOF)
{
for(i=;i<=n;i++)
{
me[i]=i;
numb[i]=;
}
for(i=;i<m;i++)
{
scanf("%d%d%d",&poi[i].a,&poi[i].b,&poi[i].c);
}
sort(poi,poi+m,cmp1);
for(i=;i<q;i++)
{
scanf("%d",&li[i].id);
li[i].num=i;
}
sort(li,li+q,cmp2);
j=;
ans=;
for(i=;i<q;i++)
{
for(;j<m;j++)
{
if(poi[j].c>li[i].id)
{
break;
}
else
{
tmpa=findme(poi[j].a);
tmpb=findme(poi[j].b);
if(tmpa!=tmpb)
{
ans+=numb[tmpa]*numb[tmpb];
link(tmpa,tmpb);
}
}
}
li[i].cc=ans;
}
sort(li,li+q,cmp3);
for(i=;i<q;i++)
{
printf("%d\n",li[i].cc);
}
}
return ;
}
HDU 3938的更多相关文章
- 数值标记问题 离线+树状数组 HDU 3938 + HDU 3333
HDU 3938 题目大意:给你一个长度为n的数组a,定义区间[l,r]的val为区间内所有不同的数值之和.现在有m个询问,每次询问一个区间,问区间的val是多少. 思路:将所有的询问按照右端点排序. ...
- 【HDU 3938】Portal (并查集+离线)
http://acm.hdu.edu.cn/showproblem.php?pid=3938 两点之间建立传送门需要的能量为他们之间所有路径里最小的T,一条路径的T为该路径上最长的边的长度.现在 Q ...
- HDU 3938:Portal(并查集+离线处理)
http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Problem Description ZLGG found a magic theor ...
- hdu 3938 Portal (prim+离线)
Problem - 3938 题意是要求出给定权值下,满足要求的点对的数目.所谓的要求是,给出两点,之间会有很多路径,这个点对的最小距离是众多路径中,最短的一条路径的长度,路径长度是路径上最长边的长度 ...
- hdu 3938 并查集
思路:这题的出题人是不是语文不行啊,题目意思说不清楚. 知道是求存在路径的点对数后,用并查集每次记录集合中点的数目,很容易就解决了. #include<set> #include<c ...
- hdu 3938 Portal(并查集+离线+kruskal)2011 Multi-University Training Contest 10
搜了题解才把题搞明白.明白之后发现其实题意很清晰,解题思路也很清晰,只是题目表述的很不清晰…… 大意如下—— 给你一个无向图,图中任意两点的距离是两点间所有路径上的某一条边,这条边需要满足两个条件:1 ...
- hdu 3938 Portal
Portal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Sub ...
- 集合问题 离线+并查集 HDU 3938
题目大意:给你n个点,m条边,q个询问,每条边有一个val,每次询问也询问一个val,定义:这样条件的两个点(u,v),使得u->v的的价值就是所有的通路中的的最长的边最短.问满足这样的点对有几 ...
- HDU 3938 Portal (离线并查集,此题思路很强!!!,得到所谓的距离很巧妙)
Portal Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
随机推荐
- 用JS获取Html中所有图片文件流然后替换原有链接
function displayHtmlWithImageStream(bodyHtml) { var imgReg = /<img.*?(?:>|\/>)/gi; var arr ...
- 什么是Entitlement
Entitlement(权限),可以想象成App里用于描述该App可以调用哪些服务的字符串.苹果的操作系统(mac os或者iOS)会通过检查这个串,决定这个应用是否可以调用相关功能.比如iCloud ...
- core mvc 分页
看了下XPAGE感觉还是用的不太爽,自己写了个,样式是bootstrap的,需要的小伙伴拿走吧. public static IHtmlContent Pager(this IHtmlHelper h ...
- Unity整合Asp.Net MVC
先来看一下我们的解决方案 我们建立Yubay.Models项目, using System; using System.Collections.Generic; using System.Data.E ...
- ADB相关指令实例详解
1.获取物理设备相关信息: adb devices 2.apk安装 2.1 新的应用(该应用未安装) adb -s 设备序列号 install apk路径 2.2 应用已安装,重安装覆盖 adb -s ...
- 沈南鹏@《遇见大咖》: A轮没投,投了8个月以后就证明了张一鸣是对了,在美国都没有张一鸣这种模式
沈南鹏@<遇见大咖>: A轮没投,投了8个月以后就证明了张一鸣是对了,在美国都没有张一鸣这种模式
- 点击按钮打开一个新的窗口 关键词(Intent, setData , putExtra , startActivity |Bundle)
M3U8_Video_demo 项目 //------------------ 创建发送private void playVideo(String source, String title) { if ...
- Thread和Runable的关系
Thread 是一个类 Runnable是一个接口 Thread是实现了Runnable接口的类,使得run支持多线程 因为类的单一继承原则,推荐多使用Runnable接口
- nginx发布web网站
修改/conf/nginx.conf配置文件 server { listen *:; # Listen server_name ""; # Don't worry if " ...
- mysql alter修改数据库表结构用法
1.alter操作表字段 (1)增加字段 alter table 表名 add 字段名 字段类型: alter table student add name varchar(10): (2)修改字段 ...