请求加强数据
  • 板块P1455 搭配购买
  • 楼主q1uple
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/23 17:44
  • 上次更新2023/10/24 03:15:42
查看原帖
请求加强数据
539133
q1uple楼主2023/1/23 17:44

下面的代码没有判断两个物品是否属于一个集合,但仍能通过

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+6;
int fa[MAXN];
int f[MAXN];
int v[MAXN],w[MAXN];
int n,m,u;
int find(int x)
{
    if(fa[x]!=x) fa[x]=find(fa[x]);
    return fa[x];
}

int main()
{
    cin>>n>>m>>u;
    for(int i=1;i<=n;i++)
        fa[i]=i;
    for(int i=1;i<=n;i++)
        cin>>v[i]>>w[i];
    while (m--)
    {
        int x,y;
        cin>>x>>y;
        int fx=find(x),fy=find(y);
         v[fy]+=v[fx];
         w[fy]+=w[fx];
         fa[fx]=fy;
        
    }
    for(int i=1;i<=n;i++)
        if(fa[i]==i)
            for(int j=u;j>=v[i];j--)
                f[j]=max(f[j],f[j-v[i]]+w[i]);

    cout<<f[u]<<endl;

    return 0;
}
2023/1/23 17:44
加载中...