题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1789

题目大意:在一个无向图中,删除某一个点所形成的最大连通分量数目是多少。

我们知道,删除一个点某个图的连通分量增加,那么这个点是割点。

我们用cutNum[u]保存u这个点所关联的连通分量的数目。其中的最大值加上原图中

的连通分量的数目就是答案。

注意边数如果是0的话,要特判一下,此时去掉某一点连通分量数是n-1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stack>
#include <queue>
#include <algorithm>
#include <iostream>using namespace std;
#define Maxn 10005
#define Maxm 500005
int dfn[Maxn];
int low[Maxn];
int dfs_clock;
int scc_cnt;
int root;
int n;
int total = 0;
int first[Maxn];
int next[Maxm];
struct Edge
{int a,b;
}edge[Maxm];int cutNum[Maxn];void addEdge(int a,int b)
{edge[total].a =a ,edge[total].b = b;next[total] = first[a];first[a] = total++;
}
void init()
{total = 0;memset(first,-1,sizeof(first));
}
void tarjan(int u)
{dfn[u] = low[u] = ++dfs_clock;int cnt = 0;for(int i=first[u];i!=-1;i=next[i]){int v = edge[i].b;if(!dfn[v]){tarjan(v);cnt++;low[u] = min(low[u],low[v]);if( (u == root && cnt>1) || (u!=root && dfn[u]<=low[v]) ) {cutNum[u]++;}}else{low[u] = min(low[u],dfn[v]);}}
}int cutPoint(int n)
{int sum = 0;dfs_clock = 0;memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(cutNum,0,sizeof(cutNum));//如果是非连通图,就得用for循环了//如果是连通图,root=1,tarjan(1)即可for(int i=1;i<=n;i++){if(!dfn[i]) sum++,root = i,tarjan(i);}int ans = 0;for(int i=1;i<=n;i++){ans = max(cutNum[i],ans);}return ans+sum;
}int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin);#endifint p,c;int a,b;while(scanf(" %d %d",&p,&c)!=EOF){if(p == 0 && c == 0) break;if(c == 0) {printf("%d\n",p-1 );continue;}init();for(int i=0;i<c;i++){scanf(" %d %d",&a,&b);a++,b++;addEdge(a,b);addEdge(b,a);}int ans = cutPoint(p);printf("%d\n",ans);}return 0;
}

Hoj 1789 Electricity相关推荐

  1. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  2. 【ACM】杭电OJ 1789(Doing Homework again)

    http://acm.hdu.edu.cn/showproblem.php?pid=1789 cmp函数: 先按扣分由多到少进行排序,然后如果遇到扣分一样的,则先做时间少的. vis数组: 最要的事, ...

  3. (最小生成树)Truck History --POJ -- 1789

    链接: http://poj.org/problem?id=1789 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 2213 ...

  4. HOJ 1991 Happy 2005 HOJ 2635 Weights 快速幂

    http://acm.hit.edu.cn/hoj/problem/view?id=1991 HOJ 1991 Happy 2005 My Tags 矩阵快速幂   (Edit)   Source : ...

  5. poj 1789 Truck History(最小生成树 prim)

    题目:http://poj.org/problem?id=1789 大意:每个卡车都有自己的编号,由七位字母组成 d(to,td) is the distance of the types指t0 和 ...

  6. 杭电1789贪心java实现

    题意: 问题描述 伊格内修斯有很多功课要做.每个老师都会给他一个交作业的截止日期.如果在截止日期之后提交作业,老师会减少他的最终考试成绩.现在我们假设每个人做功课都需要一天的时间.所以希望你帮助他安排 ...

  7. HOJ 2576 HOJ 2577 Simple Computing I II 容斥原理

    两题的链接先给上: http://acm.hit.edu.cn/hoj/problem/view?id=2576 http://acm.hit.edu.cn/hoj/problem/view?id=2 ...

  8. [codevs 1789] 最大获利(2006年NOI全国竞赛)

    描述: http://codevs.cn/problem/1789/ 题解: 第一次写最大闭合子图的题,把过程写详细. 如果要选择第i个用户群,那么就必须选择中转站ai和bi.而这个约束条件是最大闭合 ...

  9. HOJ 2278 IP Filtering (二分)

    HOJ 2278 主要思路:将IP地址看成4位256进制的数,转化成十进制,一个segment就是一个区间. 先将所有的segment按左端点升序排列,如果几个segment有重叠,则将它们合并成一个 ...

最新文章

  1. Swing组件集合的事件处理(四)
  2. keras 实战系列之Self-Attention详细解析
  3. 成功解决Error: Cannot find module 'web3'
  4. easyui和Ajax在mvc3中的权限设置
  5. 【Node.js学习笔记一】什么是Node.js?[概念总结]
  6. 7月送书中奖名单,快看!
  7. 微服务和数据库到底是什么关系?
  8. python和tableau优缺点_matplotlib和Tableau之间哪一个最好?
  9. adb工具包使用介绍 adb工具包安装使用方法
  10. 煤改气加剧雾霾”“石油焦是祸首”等谣言,你中招了吗?
  11. 本地上传文件到服务器
  12. f1c100s开发笔记
  13. Win10微软帐户切换不回Administrator本地帐户的解决方法
  14. 请问,我要去工商局申请一个工作室,法律上需要那些流程
  15. 微信小程序珊瑚文本检测分享(Java案例)
  16. gl studio 5.1 仪表仿真软件 介绍及安装
  17. Sitadel :Web安全扫描工具
  18. 电信双百兆体验极速生活
  19. 2021年,软件测试行业趋势分析和热门招聘方向
  20. 台达PLC远程监控与数据采集方案

热门文章

  1. 2021年安全员-A证最新解析及安全员-A证试题及解析
  2. 计网第三章答案(谢希仁 第七版)
  3. Apache Kafka是数据库吗?
  4. aspose将word转换为pdf[aspose.word.java 18.11]
  5. 学java用哪个翻译器好_英语翻译器软件哪个好?用这两款就对了
  6. Html 使用svg图标、iconfont的使用方法
  7. ASP.NET 三层架构技术 人力资源管理系统项目HR (深入WebServic
  8. 浏览器默认开启无痕模式
  9. 维特比算法和beam search
  10. Java:如何选择一个好的Java外包合作伙伴?