zoukankan      html  css  js  c++  java
  • HDU 5452 Minimum Cut (Spaning Tree)

    生成树的上的一个非根结点对应一条生成树上的边,然后这个结点的子树上连出去的边就对应去掉这条边的割,

    然后就可以对树外的边求LCA,在LCA上标记,利用这个信息可以算出有多少条边在子树上,以及有多少条边不再子树上。

    其实可以更进一步,非叶子结点一定不会比叶子结点更优,连的边只不会减少。

    所以只要统一叶子结点上的度数,然后枚举叶子结点。

    #include<bits/stdc++.h>
    using namespace std;
    
    const int maxn = 2e4+5;
    
    int ct[maxn],dg[maxn];
    int main()
    {
        //freopen("in.txt","r",stdin);
        int T; scanf("%d",&T);
        for(int kas = 1; kas <= T; kas++){
            int n,m; scanf("%d%d",&n,&m);
            memset(ct+1,0,sizeof(int)*n);
            memset(dg+1,0,sizeof(int)*n);
            int u,v;
            for(int i = 1; i < n; i++){
                scanf("%d%d",&u,&v);
                dg[u]++; dg[v]++;
            }
            for(int i = n; i <= m; i++){
                scanf("%d%d",&u,&v);
                ct[u]++; ct[v]++;
            }
            int MinCut = 1<<30;
            for(int i = 1; i <= n; i++){
                if(dg[i]<2){
                    MinCut = min(MinCut,ct[i]);
                }
            }
            printf("Case #%d: %d
    ",kas,MinCut+1);
        }
        return 0;
    }
  • 相关阅读:
    如何下载文件
    线程方法wait()和notify()的使用
    多线程的同步问题
    线程
    线程上下文类加载器(Context ClassLoader)
    自定义ClassLoader的使用
    类加载器及其双亲委托机制
    类加载机制导致静态变量出错问题
    JAVA JVM助记符
    JVM调试说明
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4830413.html
Copyright © 2011-2022 走看看