解决方案是并查集和Kruskal算法求最小生成树,发现了自己的问题,是学过的数据结构和算法很多都是理解原理不会写代码,
(*  ̄︿ ̄)
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int maxt = -1;
int num = 1;
struct node
{
int v =0,u = 0,t=0;
};
struct node line[100005];
int a[500005];
bool cmp(node a,node b)
{
return a.t<b.t;
}
int find(int x)
{
if(a[x]==x)return x;
else
{
a[x] = find(a[x]);
return a[x];
}
}
int main()
{
memset(a,0,sizeof(a));
int n;
int m;
int root;
cin>>n>>m>>root;
for(int i = 1;i<=n;i++)
a[i] = i;
for(int i = 1;i<=m;i++)
{
cin>>line[i].v>>line[i].u>>line[i].t;
}
sort(line+1,line+m+1,cmp);
for(int i = 1;i<=m;i++)
{
int x,y;
x = find(line[i].v);
y = find(line[i].u);
if(x!=y)
{
if(line[i].t>maxt)maxt = line[i].t;
a[y] = x;
if(num==n-1)break;
num++;
}
}
cout<<maxt<<endl;
return 0;
}