#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5;
int n,m;
struct node{
	int x,y,z;
}a[MAXN];
int f[MAXN];
bool is_f[MAXN];
int find(int x)
{
	return f[x]?f[x]=find(f[x]):x;
}
void group(int x,int y)
{
	int fx=find(x);
	int fy=find(y);
	if(fx!=fy)
		f[fx]=fy;
}
int main() 
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>a[i].x>>a[i].y>>a[i].z;
		group(a[i].x,a[i].y);	
	}
	for(int i=1;i<=n;i++)
		is_f[find(i)]=1;
	int ans=0;
	for(int i=1;i<=n;i++)
		ans+=is_f[i];
	cout<<ans<<endl;
	return 0;
}