题意:
模板题,求图中每个割点能把网络分成几个点双连通分量(不是割点就输出他有几块即可)。

题解:
跟POJ 的SPF很像

这题用Tarjan来求,首先我们需要统计出来具体有几个连通块。
对于每个连通块,我们需要判断这个割点去掉后,这幅图会被分成几块?
这个其实很简单,只需要更改一下判断这个点是否为割点即可。
每被判断成一个割点,那么这个割点++。
注意特判根节点! 看看它有几个不相连的子树
num[]代表的是 从这个点分支出去,有几个不相连的子树
到最后的时候要进行num[i]–,是因为他是头节点。

num[i]--;
/*Keep on going Never give up*/
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>#define int long long
#define endl '\n'
#define Accepted 0
#define AK main()
#define I_can signed
using namespace std;
const int maxn =3e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
using namespace std;
vector<int> edge[maxn];
int n,m;
int low[maxn];
int num[maxn],dfn[maxn];
bool visited[maxn];
int cnt,top;
void dfs(int u,int fa){visited[u]=true;low[u]=dfn[u]=++cnt;int ch=0;for(int i=0;i<edge[u].size();i++){int v=edge[u][i];if(!visited[v]){ch++;dfs(v,u);low[u]=min(low[v],low[u]);if(low[v]>=dfn[u])  num[u]++;}else if(dfn[v]<dfn[u]&&v!=fa){low[u]=min(dfn[v],low[u]);}}
//    if(u==top&&ch>=1){//        num[u]=ch;
//    }
}
I_can AK
{//freopen("in.txt","r",stdin);ios::sync_with_stdio(false);memset(visited,false,sizeof visited);cin>>n>>m;for(int i=0;i<m;i++){int u,v;cin>>u>>v;edge[u].push_back(v);edge[v].push_back(u);}//dfs(1,-1);int ans=0;//cout<<visited[1]<<endl;for(int i=1;i<=n;i++){if(!visited[i]){ans++;//cout<<i<<endl;top=i;dfs(i,-1);num[i]--;}}//cout<<ans<<endl;//cout<<num[1]<<endl;for(int i=1;i<=n;i++){cout<<num[i]+ans<<" ";}return 0;}

2020ICPC·小米 网络选拔赛第一场(D. Router Mesh)相关推荐

  1. 2020ICPC·小米 网络选拔赛第一场 D.Router Mesh

    2020ICPC·小米 网络选拔赛第一场 D.Router Mesh 题目链接 题目描述 In a Mesh networking system, there are nn_{}n​ MI Route ...

  2. 2020ICPC·小米 网络选拔赛第一场 J.Matrix Subtraction

    2020ICPC 小米 网络选拔赛第一场 J.Matrix Subtraction 题目链接 题目描述 Given a matrix MM_{}M​ of size n×mn\times mn×m a ...

  3. 2020ICPC·小米 网络选拔赛第一场

    比赛链接 前言 第二场都快打了才补完题目发博客,最近事情真的太多了= = A - Intelligent Warehouse(DP+数论优化),三种做法 题目大意 给出 n n n个数,从中选择最多的 ...

  4. 2020ICPC·小米 网络选拔赛第一场 全部题解

    整理的算法模板合集: ACM模板 目录 题目传送门 题目总体情况 A.Intelligent Warehouse B.Intelligent Robot C.Smart Browser D.Route ...

  5. acm-(推式子、好题、数学、排列计数)2020ICPC·小米 网络选拔赛第一场 H.Grouping

    传送门 先将aia_iai​从小到大排序. 然后这里有一些符号约定: ggg表示一个分组, wg=∣ai−aj∣w_g=|a_i-a_j|wg​=∣ai​−aj​∣表示某个组ggg的权值, GGG表示 ...

  6. 2020ICPC·小米 网络选拔赛第一场(Matrix Subtraction (二维差分))

    题目传送门 Matrix Subtraction 题目大意 给你一个 n × m n×m n×m的矩阵,每次可从矩阵中选择一个大小为 a × b a×b a×b的矩阵,使得该子矩阵的值全部减一 求最后 ...

  7. 2020ICPC·小米 网络选拔赛第一场 Intelligent Warehouse(DP)

    题意: n个数,要求取得最多的数,使得任意两个数其中一个为另一个倍数. 思路: 则定义dp[i]dp[i]dp[i]为第i个数为取出序列数中最大数时,最多取多少数. 则dp[i]dp[i]dp[i]向 ...

  8. ICPC2020小米网络选拔赛第一场复盘

    1.看题 第一次组队打ICPC,可能任务分配上还有待优化 但是有个团队,感觉安心好多. 我们有三个人,开始是分开来,每人看三题 djn看ABC,jyf看DEF,我看GHI,JK没人看 我开始只来得及看 ...

  9. 2020ICPC 小米 网络选拔赛第二场

    比赛链接 D - Determinant(行列式化简) 题目大意 给出行列式Mij={aibji≠jaibj+xi=jM_{ij} = \left\{\begin{array}{rcl} a_ib_j ...

最新文章

  1. 《剑指offer》c++版本 15.二进制中1的个数
  2. 调取方法_转需!不去阿里巴巴调取支付宝交易证据方法
  3. JVM技术周报第2期
  4. 小米oj 有多少个公差为2的等差数列
  5. PHP面试常考内容之面向对象(3)
  6. background image
  7. HTML5表格简单应用案例之[招聘需求表]
  8. Python实现交通标志牌(GTSRB数据集)解析处理
  9. entware mysql 5.5_分享包--K3 基于 entware 构建 debian+宝塔面板+nginx+php+mysql 备份包
  10. 机器学习笔记(九)——数据降维:主成分分析法(PCA)
  11. liunx+python+django框架实现图片生成二维码
  12. 第十一届蓝桥杯省赛B组(C/C++组)(第一场)
  13. 程序员视角的计算机系统 第一章 计算机系统之旅
  14. java.lang.NoClassDefFoundError: org/codehaus/plexus/compiler/manager/NoSuchCompilerException
  15. 【案例】湘潭大学一体化运维管理平台
  16. 王道考研论坛--算法基础
  17. Dancer--introduction小议❷
  18. 删除电脑上的顽固文件
  19. SDUT OJ 2975
  20. C语言中的正则表达式使用

热门文章

  1. acl中in和out的区别
  2. GPU服务器选购指南-思腾合力篇
  3. 计算机视觉训练模型效果不佳怎么破?
  4. 高速上车辆追尾无法移动 众人齐力抬车温暖归途
  5. 存储 dict 的元素前是计算 key 的 hash 值?
  6. C# Aop简单扫盲及ORM实体类属性拦截示例
  7. 【转】如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
  8. Zookeeper常用命令使用
  9. Android 手机卫士--自定义组合控件构件布局结构
  10. 使apk具有system权限