题意:全局最大割。
分析:有相应的算法,数据量很小,可以枚举源点,汇点,最大流。
这里用DFS,状态定义:分成两个集合,刚开始S集合全部点,然后一个一个放,这是一个回溯的过程。
没剪枝也过了。
剪枝技巧:当前这个节点放到T集合,比之前还小,那么一定,这个点不在T集合里面。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int maxn = 20 + 5; 9 int n;10 int a[maxn][maxn];11 int dep[maxn];12 13 int ans;14 15 16 void dfs(int u,int m) {17 dep[u] = 1;18 int tmp = m;19 20 for(int i=0;i ans)27 ans = m;28 29 for(int i=u+1;i tmp) {31 dfs(i,m);32 dep[i] = 0;33 }34 }35 }36 37 int main()38 {39 scanf("%d",&n);40 41 for(int i=0;i