比赛 20100421 评测结果 AWWTTTTT
题目名称 王伯买鱼 最终得分 12
用户昵称 ReimBurSe. 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-04-21 10:03:18
显示代码纯文本
#include <iostream>
using namespace std;

int mo[31];
int k[31];
int s[31][31];
int a[31];
int m,n;
int z[31];
int nn,h,tn,th;
bool ooo[31][31];

void abc(int i)
{
	int p,q,t;
	for (p=1;p<=n;p++)
	{
		if (k[p]==0)
		{
			k[p]++;
			tn++;
			a[tn]=p;
			th+=mo[p];
			t=i-1;
			for (q=1;q<=s[p][0];q++)
			{
				if (k[s[p][q]]==0)
					t--;
				k[s[p][q]]++;
			}
			if (t==0)
			{
				if ((tn>nn||(tn==nn&&th>h))&&th<=m)
				{
					nn=tn;
					h=th;
					for (q=1;q<=nn;q++)
						z[q]=a[q];
				}
			}
			else abc(t);
			a[tn]=0;
			tn--;
			th-=mo[p];
			k[p]--;
			for (q=1;q<=s[p][0];q++)
				k[s[p][q]]--;
		}
	}
}

void start()
{
	freopen("fish.in","r",stdin);
	freopen("fish.out","w",stdout);
	scanf("%d%d",&m,&n);
	int i,j,t,p,q;
	for (i=1;i<=n;i++)
	{
		scanf("%d%d",&j,&t);
		mo[j]=t;
	}
	p=1;
	q=1;
	while (p!=0&&q!=0)
	{
		scanf("%d%d",&p,&q);
		if (p!=0&&q!=0)
		{
			ooo[p][q]=true;
			ooo[q][p]=true;
		}
	}
	for (p=1;p<=n;p++)
		for (q=1;q<=n;q++)
		{
			if (ooo[p][q]==true)
			{
				s[p][0]++;
				s[p][s[p][0]]=q;
			}
		}
	for (i=1;i<=n;i++)
		k[i]=0;
	tn=0;
	th=0;
	abc(7);
}

int main()
{
	start();
	printf("%d %d\n",nn,h);
	int i;
	for (i=1;i<=nn;i++)
		printf("%d\n",z[i]);
	return 0;
}