| 比赛 | 
    中秋节快乐! | 
    评测结果 | 
    WWWEEEEEEE | 
    | 题目名称 | 
    骑士 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    小金 | 
    运行时间 | 
    1.484 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.23 MiB  | 
    | 提交时间 | 
    2024-09-17 11:58:19 | 
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,a[20],x;
bool map[20][20];
bool check(int x) 
{
	for(int i=1;i<=n;i++)
	{
	    for(int j=1;j<=n;j++)
	    {
	        if(i!=j&&x&(1<<i)&&x&(1<<j)&&map[i][j]) return false;
        }	
    }	
	return true;
}
int calc(int x) 
{
	int sum=0;
	for(int i=1;i<=n;i++)
	{
	    if(x&(1<<i)) sum+=a[i];
    }	
	return sum;
}
int main() 
{
    freopen("bzoj_1040.in","r",stdin);
    freopen("bzoj_1040.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&a[i],&x);
        map[i][x-1]=1;
        map[x-1][i]=1;
    } 
	int ans=0;
	for(int i=0;i<(1<<n);i++)
	{
	    if(check(i)) ans=max(ans,calc(i));
    }	
	printf("%d",ans);
	return 0;
}