【问题描述】
有一些简单化合物,每个化合物都由两种元素组成(每个元素用一个数字表示)。你是一个装箱工人,从实验员那里按照顺序依次把一些简单化合物装到车上。但这里存在一个安全隐患:如果车上存在k个简单化合物,正好包含k种元素,那么他们将组成一个易爆的混合物。为了安全起见,每当你拿到一个化合物时,如果它和已装车的化合物形成易爆混合物,你就应当拒绝装车。编程输出有多少个没有装车的化合物。
【输入格式】
包含多组数据。每组数据包含若干行,每行为两个不同的整数a,b,代表一个由元素a和元素b组成的简单化合物。所有简单化合物按照交给你的先后顺序排列。每组数据用一个-1结尾,然后是新的一组数据。
【输出格式】
对于每组数据,输出没有装车的化合物的个数。
【输入样例】
1 2
3 4
3 5
3 1
2 3
4 1
2 6
6 5
-1
【输出样例】
3
【数据范围】
0<=a,b<=10^5
【来源】
uva 1160
【思路梳理】
看着就不想一个简单题的样子,按照一般思路来想的话会涉及到一个问题:需要使用一个容器存储输入进的元素,便于随时检查某个元素是否在这个容器中出现过(或者是能够很轻松地去重)并且能够很轻松的马上调用出这个容器内的元素个数。首选是“优先队列+binary_search”,每一次加入新的化合物就判断一次加上这两种化合物的