奇怪的错误
查看原帖
奇怪的错误
275373
Mayoker楼主2022/8/11 16:21

WA的#5,不知道为什么错了。求助。

#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const ll N=1e4+10;

ll n,m,w;
ll f[N],val[N],dp[N],s[N];

int find(int k){
	if(f[k]==k) return k;
	return f[k]=find(f[k]);
}

void hb(int x,int y){
	x=find(x),y=find(y);
	if(x==y) return ;
	f[y]=x;
	val[x]+=val[y];
	s[x]+=s[y];
}

int main(){
	cin>>n>>m>>w;
	for(int i=1;i<=n;i++)
		cin>>s[i]>>val[i],f[i]=i;
	
	for(int i=1;i<=m;i++){
		int a,b;
		cin>>a>>b;
		hb(a,b);
	}
	
	for(int i=1;i<=n;i++)
		for(int j=w;j>=s[find(i)];j--)
			dp[j]=max(dp[j],dp[j-s[find(i)]]+val[find(i)]);
	
	cout<<dp[w];
	return 0;
}
2022/8/11 16:21
加载中...