Forests
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 5782 | Accepted: 2218 |
Description
If a tree falls in the forest, and there's nobody there to hear, does it make a sound? This classic conundrum was coined by George Berkeley (1685-1753), the Bishop and influential Irish philosopher whose primary philosophical achievement is the advancement of what has come to be called subjective idealism. He wrote a number of works, of which the most widely-read are Treatise Concerning the Principles of Human Knowledge (1710) and Three Dialogues between Hylas and Philonous (1713) (Philonous, the "lover of the mind," representing Berkeley himself).
Input
A forest contains T trees numbered from 1 to T and P people numbered from 1 to P. Standard input consists of a line containing P and T followed by several lines, containing a pair of integers i and j, indicating that person i has heard tree j fall.
Output
People may have different opinions as to which trees, according to Berkeley, have made a sound. Output how many different opinions are represented in the input? Two people hold the same opinion only if they hear exactly the same set of trees. You may assume that P < 100 and T < 100.
Sample Input
3 4
1 2
3 3
1 3
2 2
3 2
2 4
Sample Output
2
Source
#include<stdio.h>
#include<set>
#include<string.h>
using namespace std; set <int> a[] ;
bool flag [] ;
int t , p ;
//set <int> :: iterator it ;迭代器 int main ()
{
//freopen ("a.txt" , "r" , stdin ) ;
memset (flag , , sizeof(flag) ) ;
scanf ("%d%d" , &t , &p ) ;
int i , j ;
int cnt = ;
while (~ scanf ("%d%d" , &i , &j) ) {
a[i].insert (j) ;
}
for (int i = ; i < p ; i++) {
if (flag[i] == ) {
flag[i] = ;
for (int j = i + ; j <= p ; j++) {
if (a[i] == a[j]) {
flag [j] = ;
}
}
cnt ++ ;
}
}
printf ("%d\n" , cnt ) ;
return ;
}
从师兄们那学来的orz ,首先知道了如何把set中的元素输出:
set <int> ::iterator it ;
for (it = a.begin () ; it <= a.end () ; i++ )
printf ("%d " , *it ) ;
----------接下来是如何判断两个set集合相等----------
简单粗暴orz:
set <int> a , b ;
if (a == b) {
puts ("Yes") ;
}
else {
puts ("No") ;
}