比赛 20120704 评测结果 AAAAAAATTTT
题目名称 子集 最终得分 63
用户昵称 TBK 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-07-04 10:59:31
显示代码纯文本
#include <iostream> 
#include <cmath> 
#include <cstring> 
#include <string> 
#include <cstdio> 
#include <cstdlib> 
#include <iomanip> 
#include <set> 
#include <vector>
#include <algorithm> 
#define MAXN 0x7fffffff 
using namespace std; 
int a[10001],b,c,d,l,m,n,r[10001],s,t;
vector <int> v[10001]; 
int bo[10001];
void DFS(void)
{
	int i;
	for (i=1;i<=b;i++) 
		if (bo[i]==0)
		{
			t+=a[i];
			if (t>s) s=t;
			bo[i]++;
			for (d=0;d<v[i].size();d++) bo[v[i][d]]++;
			DFS();
			t-=a[i];
			for (d=0;d<v[i].size();d++) bo[v[i][d]]--;
			bo[i]--;
		}
}
int main(void) 
{    
    freopen("subseta.in","r",stdin); 
    freopen("subseta.out","w",stdout); 
	scanf("%d",&b);
	for (c=1;c<=b;c++) scanf("%d",&a[c]);
	scanf("%d",&c);
	for (d=0;d<c;d++)
	{
		scanf("%d%d",&l,&m);
		v[l].push_back(m);
		v[m].push_back(l);
	}
	DFS();
	printf("%d",s);
	fclose(stdin); 
    fclose(stdout); 
    return 0; 
}