POJ 1966 / ZOJ 2182 : Cable TV Network - 顶点连通度
2015-01-10 21:46
330 查看
题意:
输入 中继器 线缆数目(即图中点,边的数目)m,n;m对数据 表示中继器连接情况(即点的连通情况)。
需要输出 网络的安全系数——即这里无向图的顶点连通度
分析:
构造一个容量网络,得到邻接矩阵;
求每一对顶点的独立轨数目时,可固定源点,枚举每个汇点,记录最小的独立轨数目,即 所求的顶点连通度。
******
顶点连通度的求解,要转换成网络最大流问题。
——《图论算法理论、实现及应用》
输入 中继器 线缆数目(即图中点,边的数目)m,n;m对数据 表示中继器连接情况(即点的连通情况)。
需要输出 网络的安全系数——即这里无向图的顶点连通度
分析:
构造一个容量网络,得到邻接矩阵;
求每一对顶点的独立轨数目时,可固定源点,枚举每个汇点,记录最小的独立轨数目,即 所求的顶点连通度。
******
顶点连通度的求解,要转换成网络最大流问题。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int MAXN=105; int map[MAXN][MAXN]; int N,M; int max_flow(int num,int map[][MAXN],int source,int sink){ int my_queue[MAXN],queue_first,queue_end;//数组作队列,实现BFS搜索路径 int pre[MAXN],min_flow[MAXN];//节点的父结点,当前路径中最小一段的值——限制值 int flow[MAXN][MAXN];//记录当前网络中的流 int ans=0; memset(flow,0,sizeof(flow)); while(1){ queue_first=0;queue_end=0;//队列初始化 my_queue[queue_end++]=source; memset(pre,-1,sizeof(pre)); min_flow[source]=MAXN; pre[source]=-2;//源点的父结点 特殊表示 while(queue_first<queue_end){//BFS寻找增广路径 int temp=my_queue[queue_first++];//出队列 for(int i=0;i<num;i++){//由temp结点往外拓展 if(pre[i]==-1 && flow[temp][i]<map[temp][i]){//当i还未被探索到 且还有可用流量 my_queue[queue_end++]=i; pre[i]=temp; min_flow[i]=min(min_flow[temp],(map[temp][i]-flow[temp][i])); } } if(pre[sink]!=-1){ int k=sink; while(pre[k]>=0){ flow[pre[k]][k]+=min_flow[sink];//将新的流量加入flow flow[k][pre[k]]=-flow[pre[k]][k]; k=pre[k]; } break; } } if(pre[sink]==-1) return ans;//不存在增广路径 返回 else ans+=min_flow[sink]; } } int min(int a,int b){ return (a<b?a:b); } int main(){ while(~scanf("%d%d",&N,&M)){ int a,b,ans,i; memset(map,0,sizeof(map)); for(i=0;i<N;i++) map[i][i+N]=1; for(i=0;i<M;i++){ scanf(" (%d,%d)",&a,&b); map[b+N][a]=map[a+N][b]=MAXN; } ans=MAXN; for(i=1;i<N;i++) ans=min(max_flow(N*2,map,0+N,i),ans); if(ans==MAXN) ans=N; printf("%d\n",ans); } return 0; }
——《图论算法理论、实现及应用》
相关文章推荐
- poj 1966 Cable TV Network 顶点连通度
- poj 1966 Cable TV Network 顶点连通度-最大流
- POJ 1966 Cable TV Network(顶点连通度)
- POJ 1966 Cable TV Network 无向图的点连通度
- POJ 1966 Cable TV Network 顶点连通度的求解
- POJ--1966--Cable TV Network【无向图顶点连通度】
- POJ 1966 Cable TV Network(顶点连通度的求解)
- 【连通图|点连通度】POJ-1966 Cable TV Network
- poj 1966 zoj 2182 Cable TV Network(无向图顶点连通度(sap求最大流))
- POJ 1966 Cable TV Network 顶点连通度的求解
- poj 1966 Cable TV Network 顶点连通度-最大流
- poj 1966 Cable TV Network 最大独立轨
- POJ 1966 Cable TV Network
- POJ 1966 Cable TV Network(证明有误)
- poj 1966 Cable TV Network 无向图最小割
- POJ 1966--Cable TV Network【最小割 && 枚举终点起点】
- 网络流之顶点连通度 poj 1966 zoj 2182
- POJ 1966--Cable TV Network 【求无向图的点连通度 构造最大流模型 && dinic】
- POJ 1966 Cable TV Network 最小割
- POJ 1966 Cable TV Network【无向图点连通度 最小割 E-K算法求最大流】