poj 1966 Cable TV Network 点联通度

简介:

    求点联通度,就是求图中最大独立轨的最小值,把点拆成2个v',v'',v‘->v''容量为1,u-v的一条边就变为u''->v'和v''->u'两个容量为无穷的边,求s‘’ 到e'最大流即可

    第一次写dinic,没带当前弧优化,但对这题来说时间已经够了


/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
using namespace std;
#define inf 1E9
int c[105][105],f[105][105];
int s,e;
int n;
int ans=0;
int vis[105];
int level[105];
queue<int> q;
int bfs()
{
    while(!q.empty())q.pop();
    q.push(s);
    memset(level,0,sizeof(level));
    level[s]=1;
    int u,v;
    while(!q.empty())
    {
        u=q.front();
        q.pop();
        for(v=0; v<n; v++)
        {
            if(!level[v]&&c[u][v]>f[u][v])
                level[v]=level[u]+1,q.push(v);
        }
    }
    return level[e];//gap
}
int dfs(int v,int flow)
{

    if(!flow)return 0;
    if(v==e)
    {
        ans+=flow;
        return flow;
    }
    int t,last=flow;
    for(int u=0; u<n; u++)
    {
        if((level[u]==level[v]+1)&&c[v][u]>f[v][u])//最短增广路
        {
            t=dfs(u,min(flow,c[v][u]-f[v][u]));
            f[v][u]+=t;
            f[u][v]-=t;
            flow-=t;
            if(!flow)break;
        }
    }
    return last-flow;
}
int main()
{
    int m;
    while(~scanf("%d%d",&n,&m))
    {
        int i,j,a,b;
        memset(c,0,sizeof(c));
        memset(f,0,sizeof(f));
        for(i=0; i<n; i++)
            c[i+n][i]=1;
        for(i=0; i<m; i++)
        {
            scanf(" (%d,%d)",&a,&b);
            c[b][a+n]=c[a][b+n]=inf;//拆点
        }
        n=n<<1;
        ans=0;
        memset(vis,0,sizeof(vis));
        int t=n/2,Max=t;
        for(i=0; i<t; i++)
            for(j=i+t+1; j<n; j++)
            {
                if(c[i][j])continue;
                memset(f,0,sizeof(f));
                e=j;
                s=i;
                ans=0;
                while(bfs())dfs(i,inf);
                Max=min(ans,Max);
            }
        printf("%d\n",Max);
    }
}





目录
相关文章
|
Kubernetes 负载均衡 网络协议
详解 Kubernetes 的稳定性和可用性
大家好,我叫杨朝乐,来自才云科技基础设施部门。今天给大家分享一个平时可能接触得较少的话题:关于 Kubernetes 的稳定性和可用性。 下面是今天分享以下 5 个主题: 认识稳定性 认识异常 Kubernetes 里面的高可用方案 如何处理异常 我的经验分享 认识稳定性 Kubernetes 集群的稳定性和众多因素相关。
3045 1
|
存储 SQL 关系型数据库
MySQL一张表最多能存多少数据?
MySQL一张表最多能存多少数据?
MySQL一张表最多能存多少数据?
|
10月前
|
人工智能 Serverless 开发者
最佳实践 | 轻松部署,即刻触达 Qwen2.5 的飞一般的体验
通过阿里云函数计算(FC)部署Ollama和Open WebUI,实现Qwen2.5模型的托管与交互。
|
12月前
|
机器学习/深度学习 人工智能 安全
AI在灾害管理中的作用:提高防灾减灾能力
【10月更文挑战第8天】AI技术在灾害管理中的应用正在逐步改变我们对灾害的应对方式。通过发挥AI的优势,我们可以更有效地预防、减轻和应对自然灾害带来的挑战,为构建安全、弹性的社会做出更大贡献。
|
SQL 设计模式 存储
【MySQL】一文搞懂MySQL语法(进阶)
本文讲述了SQL语法一些进阶内容,全文3.4w字,都是一句一句话指导,相信用心看,肯定会有收获的,需要哪一部分的内容,点击目录即可跳转
630 0
【MySQL】一文搞懂MySQL语法(进阶)
|
人工智能 自然语言处理 搜索推荐
知识图谱的概念和应用
知识图谱是一种基于语义网络的人工智能技术,其目的是将大量不同领域的知识组织起来,形成一个具有结构和语义关系的知识库。它通过建立实体之间的关系,从而构建起来丰富的知识图谱。
966 0
|
存储 人工智能 iOS开发
Adobe illustrator2023最新免费版下载及功能介绍AI2023
Adobe Illustrator (AI 2023)是Adobe在设计行业生产的最受欢迎的矢量图形软件之一,它已经成为行业标准之一。全球数百万设计师和艺术家正在使用Illustrator进行设计和艺术创作。Illustrator广泛应用于平面设计、标志设计、图标设计、书籍插图、包装设计、印刷、广告设计和插画设计。
2527 0
|
索引
【MATLAB】imadjust, histeq, adapthisteq调整图像对比度
MALTAB中包含的三个调整图像对比度函数:imadjust, histeq, adapthisteq介绍和用法
773 0
|
弹性计算
阿里云服务器到未续费被释放数据能恢复吗?
阿里云服务器欠费被释放了,数据能恢复吗?释放即删除,无法恢复。
3697 0