每种w一起考虑,与同层冲突就加
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
using namespace std;
int n,m;
struct node
{
int u,v,w;
friend bool operator<(node a,node b)
{
return a.w>b.w;
}
}itm[200005];
int fa[200005];
int gf(int x)
{
if(x!=fa[x])
return fa[x]=gf(fa[x]);
return fa[x];
}
int main() {
while(~scanf("%d%d",&n,&m))
{
for(int i=1;i<=n;i++)
fa[i]=i;
priority_queue<node> q;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&itm[i].u,&itm[i].v,&itm[i].w);
q.push(itm[i]);
}
int cnt=0,ans=0;
while(!q.empty() && cnt<(n-1))
{
node sta=q.top();
q.pop();