逆向考虑 枚举每一天 看这一天是否有桥断掉 断掉是否影响联通即可
using namespace std;
struct node
{
    int u;
    int v;
    int t;
};
node edge[100010];
int f[10010];
int n,m;
bool cmp(node n1,node n2)
{
    return n1.t>n2.t;
}
int getf(int p)
{
    if(f[p]==p) return p;
    else
    {
        f[p]=getf(f[p]);
        return f[p];
    }
}
bool unite(int u,int v)
{
    int fu,fv;
    fu=getf(u);
    fv=getf(v);
    if(fu!=fv)
    {
        f[fv]=fu;
        return true;
    }
    else return false;
}
int main()
{
    int i,j,pre,ans,flag;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(i=1;i<=m;i++)
        {
            scanf("%d%d%d",&edge[i].u,&edge[i].v,&edge[i].t);
        }
        sort(edge+1,edge+m+1,cmp);
        for(i=1;i<=n;i++)
        {
            f[i]=i;
        }
        pre=1,ans=0;
        for(i=100000;i>=1;i--)
        {
            flag=0;
            for(j=pre;j<=m;j++)
            {
                if(edge[j].t!=i) break;
                if(unite(edge[j].u,edge[j].v))
                {
                    flag=1;
                }
            }
            pre=j,ans+=flag;
        }
        printf("%d\n",ans);
    }
    return 0;
}
                










