| 比赛 | 
    中秋节快乐! | 
    评测结果 | 
    WWWTTTTTTT | 
    | 题目名称 | 
    骑士 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    彭欣越 | 
    运行时间 | 
    21.003 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    7.73 MiB  | 
    | 提交时间 | 
    2024-09-17 10:58:50 | 
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,mk[1000010],a[1000010],f[1000010];
long long res;
void dfs (int idx,ll sum) {
	if (idx>n) {
		res=max(res,sum);
		return;
	}
	if (mk[idx]||mk[f[idx]]) {
		dfs(idx+1,sum);
		return;
	}
	mk[idx]++;
	mk[f[idx]]++;
	dfs(idx+1,sum+a[idx]);
	mk[idx]--;
	mk[f[idx]]--;
	dfs(idx+1,sum);
}
int main () {
	freopen("bzoj_1040.in","r",stdin);
	freopen("bzoj_1040.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin >> n;
	for (int i=1;i<=n;i++) {
		cin >> a[i] >> f[i];
	}
    dfs(1,0);
    cout << res;
	return 0;
}