UVA3644

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

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

简单分析一下,从第一个化合物开始,如果第二个化合物组成元素与之完全相同,那么是易爆物,不能装车,应当拒绝;否则装车,再看第三个化合物...列举所有情况发现其实就是简单的并查集。

代码如下:

#include <stdio.h>
#include <iostream>
using namespace std;
const int MAXN = 100000 + 10;
int p[MAXN];
int findset(int x){
	return p[x] != x ? p[x] = findset(p[x]) : x;
}
int main(){
	int x, y;
	while(scanf("%d", &x) != EOF){
		int refusals = 0;
		for(int i=0; i<MAXN; i++)
			p[i] = i;
		while(x!=-1){
			scanf("%d", &y);
			x = findset(x);
			y = findset(y);
			if(x==y) refusals++;
			else p[x] = y;
			scanf("%d", &x);
		}
		printf("%d\n", refusals);
	}
}



目录
相关文章
uva375 Inscribed Circles and Isosceles Triangles
uva375 Inscribed Circles and Isosceles Triangles
45 0
uva10112 Myacm Triangles
uva10112 Myacm Triangles
47 0
uva10152 ShellSort
uva10152 ShellSort
65 0
|
机器学习/深度学习
|
机器学习/深度学习 人工智能
uva 10870 Recurrences
点击打开uva 10870 思路:构造矩阵+矩阵快速幂 分析: 1 题目给定f(n)的表达式 f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n -3) + .
738 0
uva 10273 Eat or Not to Eat?
点击打开链接uva 10273 思路: 暴力求解 分析: 1 题目要求没有吃掉的奶牛的个数已经最后一次吃掉奶牛的天数 2 没有其它的方法只能暴力,对于n头牛的n个周期求最小公倍数,然后在2个公倍数之内暴力求解 代码: #inclu...
831 0
uva 1203 Argus
点击打开链接uva 1203 思路: 优先队列 分析: 1 题目要求前k个事件的编号,我们利用优先队列来维护即可 2 优先队列保存的是一个struct,因此我们需要重载 s.
1299 0
uva 1160 X-Plosives
点击打开链接uva 1160 思路: 并查集 分析: 1 看懂题目之和就是切菜了 代码: #include #include #include #include using namespace std; const int MAXN...
775 0
|
人工智能
uva 10189 Minesweeper
/* Minesweeper WA了n次才知道uva格式错了也返回wa没有pe啊尼玛 */ #include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;string.h&gt; using namespace std; char a[105][105]; int main() { int i,j,n,m,
941 0