博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LA 3644 X-Plosives
阅读量:6801 次
发布时间:2019-06-26

本文共 1090 字,大约阅读时间需要 3 分钟。

题意:有一些简单化合物,每种化合物含有两种元素,要将这些化合物装到车上,但是如果车上的化合物中,存在某k个化合物正好包含k种元素,则会爆炸。现在你是装箱工人,每当你拿到一个化合物,你都会检查如果将它装到车上是否会参生爆炸,如果会你就会拒绝将这个化合物装上车。问一共会拒绝装多少个化合物。

解法:将每种元素视为一个点,每种化合物视为一条边,也就是说,不能存在某k个点,恰巧为一个环。这样的话,就是每次拿到一个化合物检查一下两种元素是否在同一个连通分量里,如果在则不能装箱。这样就是一个裸的并查集了。

tag:并查集

1 /* 2  * Author:  Plumrain 3  * Created Time:  2013-11-29 14:14 4  * File Name: DS-LA-3644.cpp 5  */ 6 #include 
7 #include
8 9 using namespace std;10 11 const int maxn = 100005;12 13 int f[maxn];14 15 int find(int x)16 {17 if (x == f[x]) return x;18 return f[x] = find(f[x]);19 }20 21 int main()22 {23 int a, b;24 while (scanf ("%d", &a) != EOF){25 for (int i = 0; i < maxn; ++ i)26 f[i] = i;27 int ans = 0;28 while (a >= 0){29 scanf ("%d", &b);30 int t1 = find(a), t2 = find(b);31 if (t1 != t2) f[t1] = t2;32 else ++ ans;33 scanf ("%d", &a);34 }35 printf ("%d\n", ans);36 }37 return 0;38 }
View Code

 

                                                                                                                                                                                                                                                     

转载于:https://www.cnblogs.com/plumrain/p/LA_3644.html

你可能感兴趣的文章
elasticSearch6安装
查看>>
if条件测试语句
查看>>
欢迎使用如下地址领取阿里云腾讯云千元优惠券
查看>>
怎么提取PDF页面?简单的方法介绍
查看>>
大数据生态之zookeeper(典型应用场景)
查看>>
PDF文件怎么添加页眉页脚,有什么简单的方法吗?
查看>>
游戏的飞跃进展
查看>>
好程序员web前端技术分享移动端页面布局
查看>>
Oracle 10g新增列方式指定HINT
查看>>
RAC 环境下参数文件(spfile)管理
查看>>
Tomcat优化
查看>>
Linux系统启动过程故障排查
查看>>
linux下常用命令
查看>>
canvas drag 实现拖拽拼图小游戏
查看>>
返回一个首尾相连的整数数组中最大子数组的和数
查看>>
线程安全和线程不安全的理解
查看>>
工厂方法模式(java,c++,objective-c)
查看>>
优秀的博文链接
查看>>
HBase-1.0.1学习笔记(一)集群搭建
查看>>
CentOS 6.4安装配置LNMP服务器(Nginx+PHP+MySQL)
查看>>