1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 using namespace std; 6 7 int n, k; 8 const int maxn = 50000 + 5; 9 int s[maxn]; 10 int fa[maxn]; 11 int ans = 0; 12 13 void init(){ 14 ans = 0; 15 for( int i = 0;i <= n;i++){ 16 fa[i] = i; 17 s[i] = 0; //关系 18 } 19 } 20 21 int Find_fa(int x){ 22 if(x == fa[x]) 23 return x; 24 else{ 25 int t = fa[x]; 26 fa[x] = Find_fa(t); 27 s[x] = (s[x] + s[t])%3; 28 return fa[x]; 29 } 30 } 31 32 bool is_yes(int x, int y){ 33 if(x < 1 || x > n || y < 1|| y > n) 34 return true; 35 return false; 36 } 37 38 int main(){ 39 ios::sync_with_stdio(false); 40 scanf("%d %d", &n, &k); 41 int d, x, y; 42 init(); 43 while(k--){ 44 scanf("%d %d %d", &d, &x, &y); 45 if(d == 2 && x == y){ 46 ans++; 47 continue; 48 } 49 if(is_yes(x, y)){ 50 ans++; 51 continue; 52 } 53 int vx = Find_fa(x); 54 int vy = Find_fa(y); 55 56 if ( vx == vy){ 57 if (d == 1 && s[x] != s[y]){ 58 ans++; 59 continue; 60 } 61 else if (d == 2 && s[x] != (s[y] + 2)%3){ 62 ans++; 63 continue; 64 } 65 } 66 else{ 67 fa[vy] = vx; 68 s[vy] = (s[x] + d - 1 + 3 - s[y])%3; 69 } 70 } 71 printf("%d ", ans); 72 return 0; 73 }