这是我的AC代码,试一下,样例都过不了,建议加强
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,t,f[1111],T=0,went[1111],cnt;
int find(int k){
if(f[k]==k)return k;
return f[k]=find(f[k]);
}
struct A{
int x,y;
};
vector<A> ts[111111];
int main(){
cin>>n>>m;
for(int i=0;i<m;i++){
cin>>x>>y>>t;
ts[t].push_back({x,y});
T=max(T,t);
}
for(int i=1;i<=T;i++){
for(int j=0;j<ts[i].size();j++){
f[find(ts[i][j].x)]=find(ts[i][j].y);
if(went[ts[i][j].x]==0){
cnt++;
}
if(went[ts[i][j].y]==0){
cnt++;
}
went[ts[i][j].x]=went[ts[i][j].y]=1;
if(cnt>=n){
cout<<i;
return 0;
}
}
}
cout<<-1;
}