为什么会WA10分
查看原帖
为什么会WA10分
1243587
shiyilang0910楼主2024/11/1 13:56
#include<bits/stdc++.h>
using namespace std;
long long n,m,h,o;
long long mp[10005][10005];
long long ww[10005],cc[10005];
long long w[10005],c[10005],vis[10005];
long long dp[10005];
void dfs(long long x,long long k){
	for(long long i=1;i<=mp[k][0];i++){
		if (!vis[mp[k][i]]){
			vis[mp[k][i]]=1;
			w[x]+=ww[mp[k][i]];
			c[x]+=cc[mp[k][i]];
			dfs(x,mp[k][i]);
		}
	}
}
void findfriend(long long x){
	memset(vis,0,sizeof(vis));
	w[x]+=ww[x];
	c[x]+=cc[x];
	vis[x]=1;
	dfs(x,x);
}
int main(){
	//freopen("buy.in","r",stdin);
	//freopen("buy.out","w",stdout);
	cin>>n>>m>>h;
	for(long long i=1;i<=n;i++){
		cin>>ww[i]>>cc[i];
		mp[i][0]=0;
	}
	for(long long i=1;i<=m;i++){
		long long a,b;
		cin>>a>>b;
		mp[a][++mp[a][0]]=b;
		mp[b][++mp[b][0]]=a;
	}
	for(long long i=1;i<=n;i++){
		findfriend(i);
	}
	dp[0]=0;
	for(long long i=1;i<=n;i++){
		for(long long j=h;j>=w[i];j--){
			dp[j]=max(dp[j],dp[j-w[i]]+c[i]);
		}
	}
	cout<<dp[h];
	fclose(stdin);
	fclose(stdout);
	return 0;
} 
2024/11/1 13:56
加载中...