1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 using namespace std;
5 int map[5001][5001];
6 int fa[5001];
7 /*int find(int x)
8 {
9 if(fa[x]!=x) return fa[x]=find(fa[x]);
10 else return x;
11 }*/
12 int find(int x)
13 {
14 int r;
15 r=x;
16 while (fa[r]!=r) r=fa[r];
17 return r;
18 if(fa[x]!=x)return fa[x]=find(fa[x]);
19 }
20 int main()
21 {
22 memset(map,0,sizeof(map));
23 int n,m;
24 cin>>n>>m;
25 char c;
26 int x,y;
27 for(int i=1;i<=n;i++)
28 {
29 fa[i]=i;
30 }
31 for(int i=1;i<=m;i++)
32 {
33 cin>>c>>x>>y;
34 if(c==‘F‘)
35 {
36 int r=find(x);
37 int rr=find(y);
38 fa[rr]=r;
39 }
40 if(c==‘E‘)
41 {
42 for(int i=1;i<=map[x][0];i++)
43 {
44 int r=find(y);
45 int rr=find(map[x][i]);
46 fa[r]=rr;
47 }
48 for(int i=1;i<=map[y][0];i++)
49 {
50 int r=find(x);
51 int rr=find(map[y][i]);
52 fa[r]=rr;
53 }
54 map[x][0]++,map[y][0]++;
55 map[x][map[x][0]]=y;
56 map[y][map[y][0]]=x;
57 }
58 }
59 int tot=0;
60 for(int i=1;i<=n;i++)
61 {
62 if(find(i)==i)
63 {
64 tot++;
65 }
66 }
67 cout<<tot;
68 return 0;
69 }