dalao帮忙看at一下,数据太水
  • 板块P1194 买礼物
  • 楼主Liliangxi
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/4 10:48
  • 上次更新2025/2/4 16:18:36
查看原帖
dalao帮忙看at一下,数据太水
876122
Liliangxi楼主2025/2/4 10:48

AC记录1 https://www.luogu.com.cn/record/201227566

#include <bits/stdc++.h>
#define ll long long
#define lll unsigned long long
#define dou double
#define ld long double
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define INF 1234567891
using namespace std;

struct node
{
    int st,en,w;
}a[250011];
int n,m,fa[511],sum,ans,t;

bool cmp(node x,node y)
{
    return x.w<y.w;
}
int find(int x)
{
    while(x!=fa[x]) x=fa[x]=fa[fa[x]];
    return x;
}
void Kurskal()
{
    sort(a+1,a+1+sum,cmp);
    for(int i=1;i<=sum;i++)
    {
        int x,y;
        x=find(a[i].st);
        y=find(a[i].en);
        if(x==y) continue;
        fa[x]=y;
        ans+=a[i].w;
        t++;
        if(t==m) break;
    }
    return ;
}
int main()
{
    IOS;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=m;j++)
        {
            int x;
            cin>>x;
            if(i<j&&x)
            {
                sum++;
                a[sum].st=i;
                a[sum].en=j;
                a[sum].w=x;
            }
        }
        sum++;
        a[sum].st=0;
        a[sum].en=i;
        a[sum].w=n;
        fa[i]=i;
    }
    fa[0]=0;
    Kurskal();
    cout<<ans<<endl;
    return 0;
}

Kurksal部分t==m时退出是正确的

AC记录2 https://www.luogu.com.cn/record/201227220

void Kurskal()
{
    sort(a+1,a+1+sum,cmp);
    for(int i=1;i<=sum;i++)
    {
        int x,y;
        x=find(a[i].st);
        y=find(a[i].en);
        if(x==y) continue;
        fa[x]=y;
        ans+=a[i].w;
        t++;
        if(t>n) break;
    }
    return ;
}

Kurskal中是t>n时退出,按照题意是错误的,但是提交上去是AC的

蒟蒻感觉数据可能有点水

2025/2/4 10:48
加载中...