zoukankan      html  css  js  c++  java
  • 洛谷—— P3388 【模板】割点(割顶)

    https://www.luogu.org/problem/show?pid=3388

    题目背景

    割点

    题目描述

    给出一个n个点,m条边的无向图,求图的割点。

    输入输出格式

    输入格式:

    第一行输入n,m

    下面m行每行输入x,y表示x到y有一条边

    输出格式:

    第一行输出割点个数

    第二行按照节点编号从小到大输出节点,用空格隔开

    输入输出样例

    输入样例#1:
    6 7
    1 2
    1 3
    1 4
    2 5
    3 5
    4 5
    5 6
    输出样例#1:
    1 
    5

    说明

    n,m均为100000

    tarjan 图不一定联通!!!

     1 #include <cstdio>
     2 
     3 const int N(100000+5);
     4 int ans,head[N],sumedge=1;
     5 struct Edge
     6 {
     7     int v,next;
     8     Edge(int v=0,int next=0):v(v),next(next){}
     9 }edge[N<<1];
    10 inline void ins(int u,int v)
    11 {
    12     edge[++sumedge]=Edge(v,head[u]);
    13     head[u]=sumedge;
    14     edge[++sumedge]=Edge(u,head[v]);
    15     head[v]=sumedge;
    16 }
    17 
    18 #define min(a,b) (a<b?a:b)
    19 int tim,dfn[N],low[N],cutpoint[N];
    20 void Tarjan(int u,int pre)
    21 {
    22     int sumtredge=0,if_point=0;
    23     dfn[u]=low[u]=++tim;
    24     for(int v,i=head[u];i;i=edge[i].next)
    25     {
    26         v=edge[i].v;
    27         if((pre^1)==i) continue;
    28         if(!dfn[v])
    29         {
    30             sumtredge++;
    31             Tarjan(v,i);
    32             if(low[v]>=dfn[u]) if_point=1;
    33             low[u]=min(low[u],low[v]);
    34         }
    35         else low[u]=min(low[u],dfn[v]);
    36     }
    37     if(!pre)
    38     {
    39         if(sumtredge>1) ans++,cutpoint[u]=1;
    40     }
    41     else if(if_point) ans++,cutpoint[u]=1;
    42 }
    43 
    44 int main()
    45 {
    46     int n,m; scanf("%d%d",&n,&m);
    47     for(int u,v;m--;ins(u,v))
    48         scanf("%d%d",&u,&v);
    49     for(int i=1;i<=n;i++)
    50         if(!dfn[i]) Tarjan(i,0);
    51     printf("%d
    ",ans);
    52     for(int i=1;i<=n;i++)
    53         if(cutpoint[i]) printf("%d ",i);
    54     return 0;
    55 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    iOS 简单获取当前地理坐标
    iOS 企业账号申请证书和打包ipa
    iOS 代码片段的添加!
    iOS 扩展类方法之category!
    iOS 数组和字典排序
    iOS 字符串NSString 的一些常用方法
    iOS 一些常见问题
    iOS 数据库sqlite完整增删改查操作
    iOS pch文件的创建
    iOS 通过网络请求获取图片的下载歌曲
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7464259.html
Copyright © 2011-2022 走看看