连接:http://poj.org/problem?id=2914
Time Limit: 10000MS | Memory Limit: 65536K | |
Total Submissions: 6407 | Accepted: 2665 | |
Case Time Limit: 5000MS |
Description
Given an undirected graph, in which two vertices can be connected by multiple edges, what is the size of the minimum cut of the graph? i.e. how many edges must be removed at least to disconnect the graph into two subgraphs?
Input
Input contains multiple test cases. Each test case starts with two integers N and M (2 ≤ N ≤ 500, 0 ≤ M ≤ N × (N − 1) ⁄ 2) in one line, where N is the number of vertices. Following are M lines, each line contains M integersA, B and C (0 ≤ A, B < N, A ≠ B, C > 0), meaning that there C edges connecting vertices A and B.
Output
There is only one line for each test case, which contains the size of the minimum cut of the graph. If the graph is disconnected, print 0.
Sample Input
3 3 0 1 1 1 2 1 2 0 1 4 3 0 1 1 1 2 1 2 3 1 8 14 0 1 1 0 2 1 0 3 1 1 2 1 1 3 1 2 3 1 4 5 1 4 6 1 4 7 1 5 6 1 5 7 1 6 7 1 4 0 1 7 3 1
Sample Output
2 1 2
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 505; const int INF = 1<<30; int map[maxn][maxn]; int Sto_wag(int N){ int dis[maxn],node[maxn],maxj,pre,m,ans=INF; bool visit[maxn]; for(int i = 0; i < N; i ++)node[i] = i; while(N > 1){ m = -1;maxj = 1; for(int i = 1; i < N; i ++){ dis[node[i]] = map[node[0]][node[i]]; visit[node[i]] = 0; if(dis[node[i]] > m){ m = dis[node[i]]; maxj = i; } } pre = 0;visit[node[0]] = 1; for(int j = 1; j < N; j ++){ visit[node[maxj]] = 1; if(j == N-1){ ans = min(ans, m); for(int i = 0; i < N; i ++){ map[node[pre]][node[i]] += map[node[maxj]][node[i]]; map[node[i]][node[pre]] += map[node[maxj]][node[i]]; } node[maxj] = node[--N]; } else{ pre = maxj;m = -1; for(int i = 1; i < N; i ++) if(! visit[node[i]]){ dis[node[i]] += map[node[pre]][node[i]]; if(dis[node[i]] > m){ m = dis[node[i]]; maxj = i; } } } } } return ans; } int main() { int n,m; while(~scanf("%d%d",&n,&m)){ memset(map,0,sizeof(map)); for(int i=0;i<m;i++){ int a,b,c; scanf("%d%d%d",&a,&b,&c); map[a][b]+=c; map[b][a]+=c; } printf("%d\n",Sto_wag(n)); } return 0; }
相关推荐
在POJ2914题中,提供了Stoer-Wagner 算法的实现代码,该代码使用C++语言编写,使用prim算法计算图的最小割,并输出图的全局最小割结果。 Stoer-Wagner 算法是一种常用的算法,用于计算图的全局最小割,该算法可以...
1. POJ2914是一个有权无向图的最小割问题。这个问题可以通过Stoer-Wagner算法来解决,这是一种动态规划的方法,用于计算图的最小割。当图不连通时,最小割的值为0。 2. POJ2125是一个最小点权覆盖问题。题目要求...
POJ水题集-----50道左右-----增加自信啊..
【标签】"POJ 2516 Minimum Cost"表明这个题目是POJ平台上的编号为2516的题目,其关键词为“最小成本”,提示我们问题的核心在于寻找具有最小总成本的路径。 【压缩包子文件的文件名称列表】中,有两个文件: 1. ...
- 最小生成树算法:如Prim算法和Kruskal算法,用于找出图中的最小生成树,如`poj1789, poj2485`。 - 拓扑排序:适用于有向无环图,用于确定任务的执行顺序,如`poj1094`。 - 二分图的最大匹配:如匈牙利算法,...
POJ2914 - Minimum Cut - **题目链接**:[POJ2914](http://acm.pku.edu.cn/JudgeOnline/problem?id=2914) - **解法概述**:这是一道求最小割的问题,可以通过 Stoer-Wagner 算法求解。 - **Stoer-Wagner 算法**:...
最小割推荐题目源码主要涉及图论中的一个重要概念——最小割问题,以及它在解决推荐系统问题中的应用。最小割问题通常与网络流问题密切相关,是计算机科学领域中图算法的一种经典应用。在这个主题中,我们主要关注...
【标题】"POJ3292-Semi-prime H-numbers"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Set of Peking University)。这个题目主要涉及数论和算法设计,特别是关于半素数(Semi-prime)的概念以及H-...
标题中的“非常全的poj答案库 1164-1874 1000-4007”表明这是一个包含大量POJ(Problem Online Judge)编程竞赛题目解决方案的资源集合。POJ是北京大学主办的一个在线编程平台,它提供了一系列的编程题目供参赛者...
### POJ 分类题目知识点详解 #### 一、基本算法 **1. 枚举** - **定义**:枚举是一种通过尝试所有可能情况来解决问题的方法。 - **示例题目**: - poj1753 - poj2965 - **应用场景**:适用于问题规模较小或解决...
【标题】"POJ2002-Squares"是一个经典的计算机编程题目,源自北京大学的在线判题系统(POJ,即PKU Online Judge)。这个题目主要涉及到算法设计和实现,尤其是数学和动态规划方面的知识。 【描述】"解题报告+AC代码...
标题 "POJ 1751 求最小生成树Prim算法(JAVA)" 提到的是一个编程挑战,涉及图论中的经典算法——Prim算法。在计算机科学中,Prim算法是用于寻找加权无向图的最小生成树的一种有效方法。最小生成树是一棵树形结构,...
标题“POJ3253-POJ3253-Fence Repair【STL优先队列】”指的是一个在线编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目要求参赛者使用C++编程语言解决特定的问题,并且在解决方案中...
poj2516代码最小费用最大流
East Central North America 1999。50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50字50...
POJ3177-Redundant Paths 【Tarjan-边双连通分量-缩点】 解题报告+AC代码+测试数据 http://hi.csdn.net/!s/GPAY6Z 附:我所有的POJ解题报告链接 . http://blog.csdn.net/lyy289065406/article/details/6642573
普里姆算法是一种贪心算法,它从一个顶点开始,逐步扩展最小生成树,每次添加一条与当前生成树连接且权值最小的边。以下是算法的基本步骤: 1. 初始化:选择图中的任意一个顶点作为初始最小生成树的一部分。 2. 建立...
根据给定的文件信息,我们可以总结出以下关于POJ(PKU)问题2494“Acid Text”以及其Java代码实现的关键知识点: ### 1. POJ(PKU)2494:Acid Text POJ(Peking University Online Judge)是北京大学的一个在线...
POJ3352-Road Construction 【Tarjan-边双连通分量-缩点】 解题报告+AC代码 http://hi.csdn.net/!s/0T8UO5 附:我所有的POJ解题报告链接 . http://blog.csdn.net/lyy289065406/article/details/6642573
标题“poj1251 最小生成树”是一个编程竞赛题目,来源于著名的在线编程平台POJ(Programming Online Judge)。这个题目主要涉及图论中的一个经典算法问题——最小生成树(Minimum Spanning Tree, MST)。在图论中,...