为啥这野路子出问题了
查看原帖
为啥这野路子出问题了
298097
病猫小Z楼主2020/9/20 22:26

想到了个歪路子 结果想不通怎么样例都过不去QAQ

#include<bits/stdc++.h>
int imax(int x,int y){
	if(x>y)return x;
	else return y;
}
struct cloud{
	bool p;
	int g;
}s[10010];
int n,m,w,c[10010],d[10010],g;
int main(){
	scanf("%d%d%d",&n,&m,&w);
	for(int i=1;i<=n;i++)
		scanf("%d%d",&c[i],&d[i]);
	for(int i=1;i<=m;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		s[a].g=s[b].g=imax(s[a].g,s[b].g);
		if(s[a].g==0)
			s[a].g=s[b].g=++g;
	}
	int q(0);
	for(int i=1;i<=g;i++){
		int t=0,r=0;
		for(int i=1;i<=n;i++)
			if(!s[i].p&&s[i].g==g)
				t+=c[i],r+=d[i],s[i].p=true;
		if(t<=w)q=imax(q,r);
	}
	printf("%d",q);
	return 0;
}

ps.本人经常犯低级错误

2020/9/20 22:26
加载中...