传送门

其实求一个图删除一个点之后,联通块最多有多少。

直接tarjan求割点更新答案就行了。

但注意原图不一定连通。

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#define N 10005
using namespace std;
int m,n,ans,dfn[N],low[N],tot=0,cut[N];
vector<int>e[N];
inline int read(){
    int ans=0;
    char ch=getchar();
    while(!isdigit(ch))ch=getchar();
    while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
    return ans;
}
inline void tarjan(int p,int fa){
    dfn[p]=low[p]=++tot;
    for(int i=0;i<e[p].size();++i){
        int v=e[p][i];
        if(!dfn[v]){
            tarjan(v,p),low[p]=min(low[p],low[v]);
            if(low[v]>=dfn[p])++cut[p];
        }
        else if(dfn[v]<dfn[p]&&v!=fa)low[p]=min(low[p],dfn[v]);
    }
}
int main(){
    while(scanf("%d%d",&n,&m)==2&&n){
        memset(cut,0,sizeof(cut)),memset(dfn,0,sizeof(dfn)),tot=0,ans=-1;
        for(int i=1;i<=n;++i)e[i].clear();
        for(int i=1;i<=m;++i){
            int u=read()+1,v=read()+1;
            e[u].push_back(v),e[v].push_back(u);
        }
        int tmp=0;
        for(int i=1;i<=n;++i)if(!dfn[i])tarjan(i,0),++tmp,--cut[i];
        for(int i=1;i<=n;++i)ans=max(ans,cut[i]);
        printf("%d\n",ans+tmp);
    }
    return 0;
}

2018.09.15 poj2117Electricity(割点)的更多相关文章

  1. Lean Data Innovation Sharing Salon(2018.09.15)

    时间:2018.09.15地点:北京国华投资大厦

  2. 2018.09.15[POI2008]BLO-Blockade(割点)

    描述 There are exactly nn towns in Byteotia. Some towns are connected by bidirectional roads. There ar ...

  3. 2018.09.15点名器(简单dp)

    描述 Ssoier在紧张的学习中,杜老师每天给他们传授精妙的知识. 杜老师为了活跃气氛,设计了一个点名器,这个点名器包含一个长度为M的数组(下标1开始),每个元素是一个oier的名字,每次点名的时候, ...

  4. 2018.09.15 poj1734Sightseeing trip(floyd求最小环)

    跟hdu1599差不多.. 只是需要输出方案. 这个可以递归求解. 代码: #include<iostream> #include<cstdio> #include<cs ...

  5. 2018.09.15 hdu1599find the mincost route(floyd求最小环)

    传送门 floyd求最小环的板子题目. 就是枚举两个相邻的点求最小环就行了. 代码: #include<bits/stdc++.h> #define inf 0x3f3f3f3f3f3f ...

  6. 2018.09.15 bzoj1977:次小生成树 Tree(次小生成树+树剖)

    传送门 一道比较综合的好题. 由于是求严格的次小生成树. 我们需要维护一条路径上的最小值和次小值. 其中最小值和次小值不能相同. 由于不喜欢倍增我选择了用树链剖分维护. 代码: #include< ...

  7. 2018.09.15 秘密的牛奶管道SECRET(次小生成树)

    描述 约翰叔叔希望能够廉价连接他的供水系统,但是他不希望他的竞争对手知道他选择的路线.一般这样的问题需要选择最便宜的方式,所以他决定避免这种情况而采用第二便宜的方式. 现在有W(3 <= W & ...

  8. 2018.09.15 vijos1053Easy sssp(最短路)

    传送门 貌似可以最短路时同时判定负环啊. 但我不想这样做. 于是写了一个dfs版的判环,bfs版的求最短路. 代码: #include<iostream> #include<ccty ...

  9. 2018.09.15 hdu3018Ant Trip(欧拉路)

    传送门 显然答案等于各个连通分量的笔画数之和. 因此我们dfs每个连通分量计算对答案的贡献. 对于一个连通分量,如果本来就有欧拉回路那么只需要一笔. 否则需要寄点数/2那么多笔才能画完. 知道这个结论 ...

随机推荐

  1. setdeamon 设置 线程为守护线程, (lock线程锁, BoundedSemaphore,rlock递归锁 ) 三种锁

    1.setdeamon 当主程序执行完时,子程序自动被销毁 ,内存自动被收回 例一: import threading, time def run(n): print('run %s'%n) time ...

  2. UI5-文档-4.25-Sorting and Grouping

    为了使我们的发票列表更加用户友好,我们将它按字母顺序排序,而不是仅仅显示来自数据模型的顺序.此外,我们还引入了组,并添加了发布产品的公司,以便更容易使用数据. Preview The list is ...

  3. state介绍

    state是salt最核心的功能,通过预先定制好的sls(salt state file)文件对被控主机进行状态管理,支持包括程序包(pkg).文件(file).网络配置(network).系统服务( ...

  4. cacti客户端snmp设置

    1. ubuntu : apt-get install snmp snmpd vim /etc/default/snmpd  //将此配置文件中127.0.0.1 删掉. /etc/init.d/sn ...

  5. JSP复习(part 3 )

    3.4.4 request对象提供了一些用来获取客户信息的方法,利用这些方法,可以获取客户端的IP地址 协议等有关信息 3.5 request对象和response对象相对应,用于响应客户请求,由服务 ...

  6. python的map函数和reduce函数(转)

    map函数 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例 ...

  7. Cannot create inner bean '(inner bean)#67f903b5' of typ

    严重: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error crea ...

  8. Loadrunner进行参数化

    Loadrunner进行参数化 Loadrunner中进行参数化,这里有三种方法. 对需要多次使用的变量进行参数化,比如登录信息的用户名和密码,首先需要选中需要参数化的值,然后右键选择Replace ...

  9. python之用户登陆作业

    实现一个用户登陆的小程序,如果密码错误,可以重试三次,如果三次均错误,则锁定 数据库如下格式,分别用户名|密码|锁定,其中锁定字段0为正常,1为被锁定 root|admin123|0 admin|ad ...

  10. 平衡二叉树Balanced Binary Tree

    [抄题]: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced b ...