首页 > 其他分享 >1520:【 例 1】分离的路径

1520:【 例 1】分离的路径

时间:2022-11-26 17:57:17浏览次数:40  
标签:路径 int 分离 st flag dfn 1520 low hd

给一张图加边成为双连通分量( 任意两点之间都有两条不重叠的道路)

 

缩点得到树,ans= (leaf_num+1)/2

一条无向边只走一次 (flag==0)

 

#include <bits/stdc++.h>
using namespace std ;
 const int N=6000,M=7*1e4;
 
 int all,nxt[M],go[M],hd[N];
 void add(int x,int y){
     go[++all]=y,nxt[all]=hd[x],hd[x]=all;
 }
 stack<int> st; 
 int in[N],ct;
 int pool,dfn[N],low[N],b[N],n,m;
 
 void tar(int x,int fa){
     dfn[x]=low[x]=++pool; st.push(x);
     int i,y;
     int flag=0;
     for(i=hd[x];i;i=nxt[i]){
         y=go[i]; if(y==fa&&flag==0) {flag=1;continue;}
         if(!dfn[y]){
             tar(y,x),low[x]=min(low[x],low[y]);
        }
        else if(!b[y]) low[x]=min(low[x],dfn[y]); 
     }
    if(dfn[x]==low[x]){
         ct++;
         do{  
         y=st.top(); st.pop(); b[y]=ct;
        }while(x!=y);
    }
 }
 int main(){
     int i,j,x,y;
     cin>>n>>m;
     for(i=1;i<=m;i++) cin>>x>>y,add(x,y),add(y,x);
     for(i=1;i<=n;i++) if(!dfn[i]) tar(i,0);
     for(i=1;i<=n;i++)
      for(j=hd[i];j;j=nxt[j]){
          x=b[i],y=b[go[j]];
          if(x!=y) in[y]++;
      }
      
    x=0;
    for(i=1;i<=ct;i++){
        if(in[i]==1) x++;
    }
    cout<<(1+x)/2;
 }

 

标签:路径,int,分离,st,flag,dfn,1520,low,hd
From: https://www.cnblogs.com/towboa/p/16927889.html

相关文章

  • spring boot整合spring security 前后端分离
    1.springsecurity的介绍springsecurity是一个安全管理框架,源自Spring家族,可以和Spring框架无缝整合。其主要功能有:认证也就是你进行访问一些网站的时候需要进行......
  • 【算法入门&搜索法】走迷宫|单源最短路径1
    文章目录​​......
  • 【编码】PHP中文路径问题
    低版本的PHP可能会遇到不支持中文路径的情况:require('http://localhost/中文路径/test.php');require('\中文路径\test.php');$file=fopen('http://localhost/中文路......
  • js 路径
    在tomcat中发布,应用程序目录是这样的-webapp|-web-root 目录---login.jsp文件|--ext2     目录----ext-all.js 文件|---adapter 目录|----ext    ......
  • C语言实现最简单的2048存档读档功能(获取当前路径和文件IO)
    简介最近大一的学弟开始布置C语言的大作业了,于是在此提供一种比较简单的2048存档读档功能的实现1获取当前目录及存档文件记得自己大一的时候在这里研究了很久,在这里提......
  • 前后端分离 Ueditor + PHP 实现阿里云Oss上传
    首先去百度下载UeditorPHP(一般都是UTF-8版本)的当然首先要composer这样滴: "require":{"aliyuncs/oss-sdk-php":"~2.0.0",},解压后结构如下:第一步:创建OssInUe......
  • Python 文件路径
    获取主目录提到文件路径问题,不得不先提一下不同操作系统上文件夹之间的分隔符。在Windows操作系统上,路径的写法采用的是 \ 反斜杠。而在macOS和Linux操作系统上,路径......
  • 更改docker存储路径
    docker默认存储路径是/var/lib/docker,占用服务器根分区。容易导致磁盘空间占满停止docker1systemctlstopdocker创建新的存储路径1mkdir/home/docker-p迁移......
  • 【Mysql】 linux | mysql | 配置日志路径 | 关闭binlog
    一、说明        1、linux环境       2、操作数据库,一定要慎重;尤其是涉及到配置,搞不好数据就丢了,备份,备份,备份。二、日常维护1、配置错误日志路径1)mysql重......
  • HTML的a标签href属性指定相对路径与绝对路径的用法讲解
    在实际Web开发中,插入图片、包含CSS文件等都需要有路径,如果文件路径的添加错误,就会导致引用失效(无法浏览链接文件,或无法显示插入的图片等)。很多初学者感到困惑,下面我就详细......