《涝》
  • 板块灌水区
  • 楼主zhangyaiwei
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/2 15:05
  • 上次更新2023/10/27 17:22:08
查看原帖
《涝》
684245
zhangyaiwei楼主2022/8/2 15:05
#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;
}

到现在还能AC……

2022/8/2 15:05
加载中...