DFS/POJ 2531 Network Saboteur

 1 #include<cstdio>
 2 #include<cstring>
 3 using namespace std;
 4 int n,ans;
 5 int a[30][30],f[30];
 6 int cmax(int a,int b){return a>b?a:b;}
 7 void dfs(int x,int now)
 8 {
 9     if (x>n)
10     {
11         ans=cmax(ans,now);
12         return;
13     }
14     int temp=0;
15     f[x]=1;
16     for (int i=1;i<x;i++)
17         if (f[i]==0) temp+=a[x][i];
18     dfs(x+1,now+temp);
19 
20     temp=0;
21     f[x]=0;
22     for (int i=1;i<x;i++)
23         if (f[i]==1) temp+=a[x][i];
24     dfs(x+1,now+temp);
25 }
26 int main()
27 {
28     scanf("%d",&n);
29     memset(f,0,sizeof(f));
30     ans=0;
31     for (int i=1;i<=n;i++)
32         for (int j=1;j<=n;j++) scanf("%d",&a[i][j]);
33     dfs(1,0);
34     printf("%d\n",ans);
35     return 0;
36 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。