90pts求调
  • 板块P1455 搭配购买
  • 楼主Jaxent
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/15 15:01
  • 上次更新2025/7/28 18:31:25
查看原帖
90pts求调
999464
Jaxent楼主2025/7/15 15:01
#include<bits/stdc++.h>
using namespace std;
int n,m,w,c[10100],d[10100],u[5050],v[5050],dp[5050];
int main(){
	cin>>n>>m>>w;
	for(int i=1;i<=n;i++) cin>>c[i]>>d[i];
	for(int i=1;i<=m;i++) cin>>u[i]>>v[i];
	for(int j=1;j<=m;j++)
		for(int i=1;i<=m;i++){
			c[u[i]]+=c[v[i]];
			d[u[i]]+=d[v[i]];
			c[v[i]]=d[v[i]]=0;
		}
	for(int i=1;i<=m;i++) swap(u[i],v[i]);
	for(int j=1;j<=m;j++)
		for(int i=1;i<=m;i++){
			c[u[i]]+=c[v[i]];
			d[u[i]]+=d[v[i]];
			c[v[i]]=d[v[i]]=0;
		}
//	for(int i=1;i<=n;i++){
//		cout<<c[i]<<' '<<d[i]<<endl;
//	}
	for(int i=1;i<=n;i++){
		for(int j=w;j>=c[i];j--){
			dp[j]=max(dp[j],dp[j-c[i]]+d[i]);
		}
	}
	cout<<dp[w];
	return 0;
}
/*
5 3 10
3 10
3 10
3 10
5 100
10 1
1 3
3 2
4 2
*/
2025/7/15 15:01
加载中...