P1455 搭配购买

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1455 搭配购买相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;
int n,m,w,f[10005],money[10005],v[10005],ans(0),dp[10005],used[10005],k(0);
int ww[10005],mm[10005];
int find(int x)
{
if(f[x]==x)return x;
return find(f[x]);
}
void UN(int x,int y)
{
int a=find(x);
int b=find(y);
f[a]=b;
money[b]+=money[a];
v[b]+=v[a];
}
int main()
{
scanf("%d%d%d",&n,&m,&w);
for(int i=1;i<=n;i++)
scanf("%d %d",&money[i],&v[i]);
for(int i=1;i<=n;i++)f[i]=i;
for(int i=1;i<=m;i++)
{
int ll,kk;
scanf("%d%d",&ll,&kk);
UN(ll,kk);
}
for(int i=1;i<=n;i++)
{
int a=find(i);
if(a==i)
{
k++;
ww[k]=money[i];
mm[k]=v[i];
}
}
for(int i=1;i<=k;i++)
{
for(int j=w;j>=ww[i];j--)
{
dp[j]=max(dp[j],dp[j-ww[i]]+mm[i]);
}
}
cout<<*max_element(dp+1,dp+1+w);
return 0;
}

以上是关于P1455 搭配购买的主要内容,如果未能解决你的问题,请参考以下文章

P1455 搭配购买

洛谷P1455 搭配购买

P1455 搭配购买 (并查集+01背包)

luogu P1455 搭配购买 题解

洛谷——P1455 搭配购买

搭配购买