标签:pos accept more mat form matrix info res int
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 9364 | Accepted: 4417 |
Description
Input
Output
Sample Input
3 0 50 30 50 0 40 30 40 0
Sample Output
90
百度了一下才知道思路,继续努力。
。。
题意:把一个连通的集合分成两个不连通的集合。求这两个集合间最大的信息交换量。
每一个点(电脑)能够由两个选择。分给A集合或者B集合。
每次把一个点分类后。马上求出它和还有一个集合的交换信息量。
#include<stdio.h>
#include<queue>
#include<map>
#include<string>
#include<string.h>
using namespace std;
#define N 25
const int inf=0x1f1f1f1f;
int g[N][N];
int ans,n;
bool f[N];
void dfs(int u,int sum)
{
if(u>=n)
{
ans=max(ans,sum);
return ;
}
int i,tmp=0;
f[u]=false; //把点U分为集合A
for(i=0;i<u;i++) //求点U和集合B交换的信息量
if(f[i]==true)
tmp+=g[u][i];
dfs(u+1,sum+tmp);
f[u]=true; //把点U分为集合B
for(i=tmp=0;i<u;i++) //求点U和集合A交换的信息量
if(f[i]==false)
tmp+=g[u][i];
dfs(u+1,sum+tmp);
}
int main()
{
int i,j;
while(scanf("%d",&n)!=-1)
{
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&g[i][j]);
ans=0;
dfs(0,0);
printf("%d\n",ans);
}
return 0;
}
poj 2531 Network Saboteur (dfs)
标签:pos accept more mat form matrix info res int
原文地址:http://www.cnblogs.com/yxysuanfa/p/6848927.html