[最小点割集]poj 1815 #贪心枚举

这是一个使用C语言实现的求解无向图最小点割集的问题。通过将源点s和汇点t特殊处理,然后进行贪心枚举,从最小标号的顶点开始,删除节点并检查最大流是否减小,从而找到最小点割集。
摘要由CSDN通过智能技术生成
/**
[最小点割集]poj 1815
无向图中至少删掉多少点使得s,t不连通。
最小点联通度问题,最小点割集
将s看成源点,t看成汇点,
将每个点拆成两个点u和u',之间连容量为1的边,
原来从u到v的边,变成从u'到v的边,边容量都是无穷大,
新源点为s',新汇点还是t。

题目需要输出分数最小的点割集,即按字典序排序最小,
贪心地从最小标号的顶点到最大标号的顶点一次枚举,
每次删除边i和i',如果新的最大流比原来的最大流小,说明该点在最小点割集中,
否则,恢复边i和i'
*/
#include <stdio.h>
#include <string.h>
#include <queue>
using namespace std;

const int inf=1<<30;
const int MAX=405;
int c[MAX][MAX],f[MAX][MAX],pre[MAX];
int dis[MAX],num[MAX],cur[MAX];
int s,t,n;
void bfs()
{
    int u,v,i,vis[MAX];
    memset(dis,0,sizeof(dis));
    memset(num,0,sizeof(num));
    queue<int>q;
    q.push(t);
    vis[t]=0;
    di
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值