如题,下载下来样例过了,但交到评测机上只有10pts
#include <bits/stdc++.h>
using namespace std;
#define For(i, x, y, ...) for(int i = x, ##__VA_ARGS__; i <= y; ++i)
#define rFor(i, x, y, ...) for(int i = x, ##__VA_ARGS__; i >= y; --i)
#define Rep(i, x, y, ...) for(int i = x, ##__VA_ARGS__; i < y; ++i)
#define mem(a, x, n) memset(a, x, sizeof(a[0]) * (n + 2))
#define all(a) a.begin(), a.end()
#define pb emplace_back
#define MT make_tuple
#define MP make_pair
#define fi first
#define se second
typedef long long LL; typedef unsigned long long ULL;
typedef pair<int, int> PII; typedef vector<int> VI;
template<typename T>void read(T &x) {
x = 0; char c = getchar(); int f = 0;
while (!isdigit(c)) f = c == '-', c = getchar();
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
x *= f ? -1 : 1;
}
template<typename T, typename ...Args>void read(T &x, Args &...args) {read(x); read(args...);}
int fa[2005];
int n, m;
int p, q;
char opt;
int find(int x) {
if (fa[x] != x) fa[x] = find(fa[x]);
return fa[x];
}
int main() {
read(n, m);
For(i, 1, 2 * n) fa[i] = i;
For(i, 1, m) {
opt = getchar();
read(p, q);
if (opt == 'E') {
fa[find(p + n)] = find(q);
fa[find(q + n)] = find(p);
}
if (opt == 'F') {
fa[find(p)] = find(q);
}
}
int ans = 0;
For(i, 1, n) {
if (fa[i] == i) ans++;
}
printf("%d\n", ans);
return 0;
}