大佬帮我看下代码
查看原帖
大佬帮我看下代码
396770
天随游子楼主2021/4/14 20:17
#include <bits/stdc++.h>
using namespace std;
int n,m,o,w[10001],c[10001],a,b,fa[10001],f[10001];
int find (int a) {
	return fa[a]==a?a:fa[a]=find(fa[a]);
}
int main()
{
	cin>>n>>m>>o;
	for(int i=1;i<=n;i++) {
		scanf("%d%d",&w[i],&c[i]); fa[i]=i;
	}
	for(int i=1;i<=m;i++) {
		scanf("%d%d",&a,&b);
		int fx=find(a),fy=find(b);
		if(fx!=fy) fa[fx]=fy,w[fx]+=w[fy],c[fx]=c[fy];
	}
	for(int i=1;i<=n;i++)
	if(fa[i]==i){
		for(int j=o;j>=w[i];j--) f[j]=max(f[j],f[j-w[i]]+c[i]);
	}
	cout<<f[o];
	return 0;
}

2021/4/14 20:17
加载中...