poj 2531 Network Saboteur( dfs )
题目:http://poj.org/problem?id=2531
题意:一个矩阵,分成两个集合,求最大的 阻碍量
改的 一位大神的代码,比较简洁
1 #include<stdio.h> 2 #include<string.h> 3 int n,max; 4 int g[30][30]; 5 int v[30]; 6 void dfs(int x,int sum) 7 { 8 int i,t=sum; 9 v[x]=1; 10 for(i=1; i<=n; i++) 11 { 12 if(v[i]==0) 13 t+=g[x][i]; 14 else t-=g[x][i]; 15 } 16 if(t>max) 17 max=t; 18 for(i=x+1; i<=n; i++) 19 if(t>sum) 20 { 21 dfs(i,t); 22 v[i]=0; 23 } 24 } 25 int main() 26 { 27 int i,j; 28 scanf("%d",&n); 29 for(i=1; i<=n; i++) 30 for(j=1; j<=n; j++) 31 scanf("%d",&g[i][j]); 32 max=0; 33 memset(v,0,sizeof(v)); 34 dfs(1,0); 35 printf("%d\n",max); 36 return 0; 37 }