结果
#include<bits/stdc++.h>
using namespace std;
long long n,a[100000],hate[100000][100000],hat,b[100000],cnt,maxx;
bool d;
void dfs(){
if(cnt>maxx)maxx=cnt;
for(int i=1;i<=n;i++){
if(b[i]==0){
d=0;
for(int j=1;j<=n;j++){
if(b[j]==1&&hate[i][j]==1){d=1;break;}
}
if(d==0){
cnt+=a[i];
b[i]=1;
dfs();
cnt-=a[i];
b[i]=0;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>hat;
hate[i][hat]=1;
hate[hat][i]=1;
}
dfs();
cout<<maxx;
return 0;
}
谢谢!!!