您的位置:首页 > 理论基础 > 计算机网络

pku 2531 Network Saboteur(不会搜索,用的枚举)

2009-08-09 19:43 393 查看
网络中有N个节点,可以把这N个节点划分成两个集合,同一个集合中的节点间进行通讯没有消耗,不同集合中的节点间进行通讯会有消耗,问如何划分集合,使得消耗最大化。

 

网上这题的解题报告极少,貌似有用搜索很快过的,可惜我不会,用的枚举,1000ms。

 

#include <iostream>
using namespace std;
int mat[20][20];
bool flag[20];
int main()
{
int ans=0,state,n,state_end,flow;
scanf("%d",&n);
state_end=1<<(n-1);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&mat[i][j]);
}
}
for(int i=0;i<state_end;i++)
{
state=i;
for(int j=0;j<n;j++)
{
flag[j]=state&1;
state>>=1;
}
flow=0;
for(int j=0;j<n;j++)
{
if(!flag[j]) continue;
for(int k=0;k<n;k++)
{
if(flag[k]) continue;
flow+=mat[j][k];
}
}
if(flow>ans) ans=flow;
}
printf("%d/n",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  network 通讯 网络 ini