水水水
  • 板块P1194 买礼物
  • 楼主Ytle_sky
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/22 16:38
  • 上次更新2025/7/22 16:45:35
查看原帖
水水水
1182309
Ytle_sky楼主2025/7/22 16:38

这T**的都能过

#include <bits/stdc++.h>
using namespace std;
const int N=1e5*5+10;
struct j{
    int a,b,c;
}q[N];
int p[N];
int find(int x){
    if(p[x]==x)return x;
    return p[x]=find(p[x]);
}
int main(){

    int n,m=0;
    cin>>n>>m;
    int w=1;
    for (int x=1;x<=m;x++)
        q[w++]={1, x, n};

    for(int x=1;x<=m;x++)p[x]=x;

    for(int x=1;x<=m;x++){
        for(int y=1;y<=m;y++){
            q[w].a=x,q[w].b=y;
            cin>>q[w].c;
            if(q[w].c==0) q[w].c=n;
            w++;
        }
    }
    sort(q+1,q+w,[](j x,j y){return x.c<y.c;});
    long long sum=0;
    for(int x=1;x<w;x++){
        if(find(q[x].a)!=find(q[x].b)){
            p[find(q[x].b)]=find(q[x].a);
            sum+=q[x].c;
        }
    }
    cout<<sum+n;
    return 0;
}
2025/7/22 16:38
加载中...