POJ 1966 求无向图点连通度
来源:互联网 发布:现在开淘宝挣钱吗 编辑:程序博客网 时间:2024/05/21 09:39
思路:
n^2枚举(必须要n^2枚举啊)+拆点
特此嘲讽网上诸多垃圾题解,你们许多都是错的 —yyh
//By SiriusRen#include <queue>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define N 5555int n,m,xx,yy,inf=0x3fffff,ans,ed=105;struct Node{int x,y;}point[N];struct Dinic{ int first[107],next[N],v[N],w[N],tot,vis[107]; void solve(int x,int y){ memset(first,-1,sizeof(first)),tot=0; add(0,x,inf),add(x,x+n,inf),add(y,y+n,inf),add(y+n,105,inf); for(int i=1;i<=n;i++)add(i,i+n,1); for(int i=1;i<=m;i++)add(point[i].x+n,point[i].y,inf),add(point[i].y+n,point[i].x,inf); ans=min(ans,x=flow()); } void add(int x,int y,int z){Add(x,y,z),Add(y,x,0);} void Add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;} bool tell(){ memset(vis,-1,sizeof(vis)),vis[0]=0; queue<int>q;q.push(0); while(!q.empty()){ int t=q.front();q.pop(); for(int i=first[t];~i;i=next[i]) if(vis[v[i]]==-1&&w[i]) vis[v[i]]=vis[t]+1,q.push(v[i]); } return vis[ed]!=-1; } int zeng(int x,int y){ if(x==ed)return y; int r=0; for(int i=first[x];~i&&y>r;i=next[i]) if(vis[v[i]]==vis[x]+1&&w[i]){ int t=zeng(v[i],min(y-r,w[i])); w[i]-=t,w[i^1]+=t,r+=t; } if(!r)vis[x]=-1; return r; } int flow(){ int jy=0,tmp; while(tell())while(tmp=zeng(0,inf))jy+=tmp; return jy; }}dinic;int main(){ while(~scanf("%d%d",&n,&m)){ ans=inf; for(int i=1;i<=m;i++){ scanf(" (%d,%d)",&point[i].x,&point[i].y); point[i].x++,point[i].y++; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i!=j)dinic.solve(i,j); if(ans==inf)printf("%d\n",n); else printf("%d\n",ans); }}
0 0
- POJ 1966 求无向图点连通度
- poj 1966 无向图的点连通度
- POJ 1966--Cable TV Network 【求无向图的点连通度 构造最大流模型 && dinic】
- pku 1966 Cable TV Network(求无向图的点连通度)
- poj 1966(无向图的点连通度。。。。。最大流处理。。。)
- POJ 1966 Cable TV Network 无向图的点连通度
- 求无向图连通图点双连通分支
- 求无向连通图的割点
- 求无向连通图的割点
- 求无向连通图的割点(图论)
- 求无向连通图的割点
- poj 1966(求图(有向和无向图)的--边连通度和顶点连通度---转为最小割)
- poj 1523 求无向图所有割点以及删除割点后连通分量个数 给出详细算法思路
- poj 1966 zoj 2182 Cable TV Network(无向图顶点连通度(sap求最大流))
- 无向图dfs求连通分量
- 求无向图的连通分量
- 求无向连通图的点双连通分支(不包含割点的极大连通子图)
- Tarjan算法求BCC(无向图连通块、割边、割点)
- gcc -l参数和-L参数
- 第三十九讲项目4——输入一个正整数,判断其是否为一个回文数
- 为什么匿名内部类和局部内部类只能访问final变量
- signal_test.c
- 主广告04-右侧带文字标题-兼容IE8和Chrome浏览器
- POJ 1966 求无向图点连通度
- mac下用mamp和phpstorm搭建php开发环境
- 关于指针的浅析---------指针基础部分2,间接访问和直接访问
- 解释型脚本语言:
- 经典算法(1):梯度下降法(Gradient)
- CSS理论
- 第二章 观察者模式
- 如何配置struts+hibernate,基本使用方法
- 强制要求JVM始终抛出含堆栈的异常(-XX:-OmitStackTraceInFastThrow)