使用了bitset解决 /* 2419 Forests */ #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #include <bitset> using namespace std; const int MAX = 105; int main() { bitset<MAX> person[MAX]; int per, tree; int a, b; cin >> per >> tree; while (cin >> a >> b) { person[a].set(b); } bitset<MAX> visited; int count = 0; for (int i = 1; i <= per; ++ i) { if (visited.test(i)) continue; ++ count; visited.set(i); for (int j = i + 1; j <= per; ++ j) { if (person[i] == person[j]) visited.set(j); } } cout << count << endl; return 0; }