部分内容摘自博客http://blog.csdn.net/u012881011/article/details/46883863,感谢

易爆物D305
            运行时间限制:1000ms; 运行空间限制:51200KB;
试题描述

有一些简单化合物,每个化合物部由两种元素组成的(每个元素用一个大写字母表示)。你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上。但这里存在一个安全隐患:如果车上存在k个简单化合物,正好包含k种元素,那么它们将组成一个易爆的混合物。为了安全起见,每当你拿到一个化合物时,如果它和已装车的化合物形成易爆混合物,你就应当拒绝装车;否则就应该装车。编程输出有多少个没有装车的化合物。

输入
第一行包含一个正整数n,表示化合物的个数。接下来有n行,每行包括两个不同的整数a和b,表示一个由元素a和元素b组成的简单化合物。所有简单化合物按照交给你的先后顺序排列。
输出
一个数,表示没有装车的化合物的个数。
输入示例
6 2 4 3 4 2 9 3 8 4 8 3 9
输出示例
2
其他说明
数据范围:0 <= a,b <= 10^5,提示:并查集的相关知识。 样例说明:化合物4 8和化合物3 9没有装车。

题解:

可以用并查集来做。每一种元素看成一个独立的顶点,则一个化合物就是一条边。若两个元素联通,则危险不装车,ans++;否则就装车。

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,a[],b[],f[],ans,cnt;
int gets(int x1)
{
if(f[x1]==x1) return x1;
f[x1]=gets(f[x1]);
return f[x1];
} void h(int x,int y)
{
int f1=gets(x),f2=gets(y);
if(f1==f2)
ans++;
else
f[f1]=f2;
} int main()
{
int i,u=,k=;
scanf("%d",&n);
for(i=;i<=;i++) f[i]=i;
for(i=;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=;i<=n;i++)
{
h(a[i],b[i]);
}
printf("%d",ans); return ;
}

D305

并查集——易爆物D305的更多相关文章

  1. LA 3644 易爆物 并查集

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  2. BZOJ 4199: [Noi2015]品酒大会 [后缀数组 带权并查集]

    4199: [Noi2015]品酒大会 UOJ:http://uoj.ac/problem/131 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品 ...

  3. 关押罪犯 and 食物链(并查集)

    题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值"( ...

  4. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  5. bzoj1854--并查集

    这题有一种神奇的并查集做法. 将每种属性作为一个点,每种装备作为一条边,则可以得到如下结论: 1.如果一个有n个点的连通块有n-1条边,则我们可以满足这个连通块的n-1个点. 2.如果一个有n个点的连 ...

  6. [bzoj3673][可持久化并查集 by zky] (rope(可持久化数组)+并查集=可持久化并查集)

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  7. [bzoj3123][sdoi2013森林] (树上主席树+lca+并查集启发式合并+暴力重构森林)

    Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20. 第二行包含三个整数N,M,T,分别表示节点数.初始边数.操作数 ...

  8. 【BZOJ-3673&3674】可持久化并查集 可持久化线段树 + 并查集

    3673: 可持久化并查集 by zky Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1878  Solved: 846[Submit][Status ...

  9. Codeforces 731C Socks 并查集

    题目:http://codeforces.com/contest/731/problem/C 思路:并查集处理出哪几堆袜子是同一颜色的,对于每堆袜子求出出现最多颜色的次数,用这堆袜子的数目减去该值即为 ...

随机推荐

  1. Java知多少(8)类库及其组织结构

    Java 官方为开发者提供了很多功能强大的类,这些类被分别放在各个包中,随JDK一起发布,称为Java类库或Java API. API(Application Programming Interfac ...

  2. Fedora Server 21下OpenJdk和Oracle Jdk共存

    最新文章:Virson's Blog 参考文章:博客园-三维蚂蚁 Linux公社 1.首先需要下载对应平台的Jdk:Oracle 官网 2.使用yum或rpm命令安装Jdk: yum install ...

  3. Spring注解开发之Spring常用注解

    https://blog.csdn.net/Adrian_Dai/article/details/80287557主要的注解使用: 本文用的Spring源码是4.3.16@Configuration ...

  4. 大数据学习笔记02-HDFS-常用命令

    创建目录 hadoop fs -mkdir [-p] hdfs://master:9999/user/hadoop-twq/cmd 上传文件 hadoop fs -put [-f -d] [local ...

  5. Microsoft.Identity的IPasswordHasher加密的默认实现与运用

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文地址  www.cnblogs.com/tdws 相信了解了MS Identity认证体系的一定知道UserManager的作用,他是整个体 ...

  6. 1. ansible-playbook 变量定义与引用

    简单的playbook playbook 是ansible的核心组件,使用的是YAML语法. 下面请看简单的playbook代码 [root@LeoDevops playb]# cat nginx.y ...

  7. css预处理和bootstrap

    css预处理框架的比较 http://www.oschina.net/question/12_44255?sort=default&p=4 bootstrap中文网 http://v3.boo ...

  8. 前端分页插件pagination

    摘要: 最近在开发项目中又用到了前端分页,以前也做过,为了方便以后使用所以将他封装成第三方插件,不依赖任何库.网上已经有很多插件,问什么还要自己造轮子? 自己写的扩展性高 不依赖任何库 作为一次技术沉 ...

  9. chrome设置捕获异常时自动暂停js

    1. [F12 | 右键审查元素] 打开chrome调试工具 2. 进行如下设置 a. 点击Pause on exceptions b. 选中Pasue On Caught Exceptions 设置 ...

  10. Apache Maven 打包可执行jar

    在本文的 参考资料 部分,您将发现大量介绍 Maven 的入门教程.本文的 5 个技巧目的是帮助您解决即将出现的一些问题:使用 Maven 管理您的应用程序的生命周期时,将会出现的编程场景. 1. 可 ...