20分的我崩溃了
查看原帖
20分的我崩溃了
550532
LS时空光影楼主2022/2/19 15:00

20分代码呈上:

#include <iostream>
#include <cstdio>
using namespace std;
int n,m,r,i,j,x,y,fx,fy,a[10010],b[10010],f[10010];
int find(int t){
	if(f[t]==t) return t;
	else{
		f[t]=find(f[t]);
		return f[t];
	}
}
int main(){
	scanf("%d%d%d",&n,&m,&r);
	for(i=1;i<=n;i++) f[i]=i;
	for(i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);
	for(j=1;j<=m;j++){
		scanf("%d%d",&x,&y);
		f[find(x)]=find(y);
	}
	for(i=1;i<=n;i++)
		if(f[i]!=i){
			a[f[i]]+=a[i];
			b[f[i]]+=b[i];
			a[i]=b[i]=0;
		}
	for(i=1;i<=n;i++)
		for(j=r;j>=a[i];j--)
			f[j]=max(f[j],f[j-a[i]]+b[i]);
	printf("%d\n",f[r]);
	return 0;
}

除了第一个点和第九个点都错了。QAQ

2022/2/19 15:00
加载中...