[HNOI2012]矿场搭建

题解:

首先显然这是要缩点的 缩点双

直接对割点之间的联通块判断一下连着几个割点

连0个 cnt*(cnt-1)/2

连1个 cnt

连2个 0

代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 2000
bool iscut[N],ff[N];
ll head[N],dfn[N],low[N],cc,now,l,num,cnt,T,color[N];
ll n,m;
struct re{ll a,b,c;
}a[N];
void arr(ll x,ll y)
{a[++l].a=head[x];a[l].b=y;head[x]=l;
}
void tarjan(ll x,ll fa)
{dfn[x]=low[x]=++now;ll child=0;ll u=head[x];while (u){ll v=a[u].b;if (!dfn[v]){child++;tarjan(v,x);low[x]=min(low[x],low[v]);if (low[v]>=dfn[x]) iscut[x]=1;} else{if (v!=fa) low[x]=min(low[x],dfn[v]);}u=a[u].a;}if (fa==0&&child==1) iscut[x]=0;
}
void dfs(ll x)
{color[x]=cc;if (iscut[x]) return;ff[x]=1; cnt++;ll u=head[x];while (u){ll v=a[u].b;if (iscut[v]&&color[v]!=cc) num++;if (!ff[v]) dfs(v);u=a[u].a;}
}
int main()
{freopen("noi.in","r",stdin);freopen("noi.out","w",stdout);while (cin>>m&&m){T++;n=0; memset(head,0,sizeof(head));now=l=0;memset(iscut,0,sizeof(iscut));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(ff,0,sizeof(ff));for (ll i=1;i<=m;i++){ll x,y;cin>>x>>y;n=max(n,max(x,y));arr(x,y); arr(y,x);}for (ll i=1;i<=n;i++)if(!dfn[i]) tarjan(i,0);ll ans=1,ans1=0;for (ll i=1;i<=n;i++)if (!iscut[i]&&!ff[i]){num=0; cnt=0; cc++;dfs(i);if (num==0) ans*=max(1ll,cnt*(cnt-1)/2),ans1+=min(cnt,2ll);if (num==1) ans*=cnt,ans1++;}cout<<"Case "<<T<<": "<<ans1<<" "<<ans<<endl;}return 0;
} 

 

转载于:https://www.cnblogs.com/yinwuxiao/p/8831728.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

地图与定位之定位

今天开始总结一下地图与定位。首先要使用定位就要引用框架CoreLocation.framework,在类文件中加入#import <CoreLocation/CoreLocation.h>,其次在IOS8中调用的时候要在Info.plist中加两个Key,NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,具体…

merge into ORA-30926

ORA-30926: 无法在源表中获得一组稳定的行 同时要求在一张表中添加一个字段&#xff0c;由于数据量较大&#xff0c;想使用merge into update的方式将数据 meger into xxx1 t1 using(select * from xxx2 )t2 on(t1.xmt2.xm and t1.dzt2.dz) when matched then update set tra…

rocketmq 如何保证高可用_RocketMq容灾、高可用方案

一、实现分布式集群多副本的三种方式1.1 M/S模式即Master/Slaver模式。该模式在过去使用的最多&#xff0c;RocketMq之前也是使用这样的主从模式来实现的。主从模式分为同步模式和异步模式&#xff0c;区别是在同步模式下只有主从复制完毕才会返回给客户端&#xff1b;而在异步…

Debian 9 strech 安装 ROS lunar

1. 配置源 按照我以前的博客配置或者按照wiki上的配置。 2. sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list3. sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:…

谈Find指令

Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。Linux下find命令提供了相当多的查找条件&#xff0c;功能很强大。由于find具有强大的功能&#xff0c;所以它的选项也很多&#xff0c;其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系…

数据库原理归档——对于数据库原理最全的总结

恭喜你来到新天地&#xff01; 以下的笔记是我复习了三次总结出来的&#xff0c;属于一个归档。目前还在对以往的知识做一个更加详细地总结&#xff0c;所以仍在更新中。这份笔记对于新手入门数据库来说十分友好&#xff0c;语言通俗易懂。在数据库中&#xff0c;还涉及到很多…

k8s部署tomcat及web应用_部署 Spring Boot 应用到 K8S 教程

点击上方 Java后端&#xff0c;选择 设为星标优质文章&#xff0c;及时送达作者&#xff1a;qingmuqingmu.io/2020/04/08/Spring-Boot-Operator-User-Guide/前言在Kubernetes中部署spring boot应用整体上来说是一件比较繁琐的事情&#xff0c;而Spring Boot Operator则能带给你…

Web性能优化分析

如果你的网站在1000ms内加载完成&#xff0c;那么会有平均一个用户停留下来。2014年&#xff0c;平均网页的大小是1.9MB。看下图了解更多统计信息。 直击现场 《HTML开发MacOSApp教程》 http://pan.baidu.com/s/1jG1Q58M 网站的核心内容需要在1000ms内呈现出来。如果失败了&a…

Ionic 自定义组件中使用 Ionic 官方组件

问题起因&#xff1a; 在项目目录中使用 ionic g component SearchBar 加入一个新的自定义组件并在 html 中插入代码&#xff1a; 1 <div> 2 <ion-searchbar 3 [(ngModel)]"myInput" 4 showCancelButton"true" 5 placeholder"…

scp构造端口_指定端口号的scp

指定端口号的scp我正在尝试将文件从远程服务器scp到我的本地计算机。 只有80端口可以访问。我试过了&#xff1a;scp -p 80 usernamewww.myserver.com:/root/file.txt .但得到了这个错误&#xff1a;cp: 80: No such file or directory如何在scp命令中指定端口号&#xff1f;On…

闭包/Block当成函数参数实现回调

2019独角兽企业重金招聘Python工程师标准>>> Swift // MARK:// MARK: 获取数据/// 获取数据class func toolLoadData(completion:(finish: String) -> ()? ,content: String) {self .nextStepRequest({ (finish) -> ()? in// 接收到数据 调用 block 传递数据…

利用find同时查找多种类型文件

find . -name "*.c" -o -name "*.cpp" -o -name "*.h" 就可以列出当前目录下面所有的c,cpp,h文件转载于:https://www.cnblogs.com/baizx/p/4438905.html

JS动态插入HTML后不能执行后续JQUERY操作

通过js追加的html 发现 不能点击 执行函数 普通绑定事件&#xff1a;$(.btn1).click(function(){}绑定 事件委托 解决方法&#xff1a; $("body").delegate(".class","click",function(){}); on绑定事件&#xff1a;$(document).on(click,.btn2,…

linux重装eclipse_Linux环境安装Eclipse工具开发

2、上传到虚拟机进行解压缩操作&#xff1a;[hadoopslaver1 package]$ tar -zxvf apache-maven-3.5.3-bin.tar.gz -C /home/hadoop/soft/3、配置Maven的环境变量&#xff1a;[hadoopslaver1 soft]$ sudo vim /etc/profileexport MAVEN_HOME/home/hadoop/soft/apache-maven-3.5.…

js中如何判断一个DOM对象是否存在?

<div id"div1"></div> if(!!document.getElementById("div1"))转载于:https://www.cnblogs.com/AmayaWang/p/5528320.html

使用labview读取一副位图,并进行BCG校准(或修改其BCG)程序解析

进行图像处理第一步肯定就是要读取一副图片&#xff0c;然后再进行图像的BCG校准。 首先讲解一下用到的函数第一个函数为IMAQ Create&#xff0c;位于 视觉与运动--Vision Utilities---Image Management---IMAQ create 函数如图&#xff0c;对于如何看函数功能&#xff0c;还是…

实现生成小学四则运算练习题

实现小学四则运算练习题 1.题目要求 本次作业要求两个人合作完成&#xff0c;驾驶员和导航员角色自定&#xff0c;鼓励大家在工作期间角色随时互换&#xff0c;这里会布置两个题目&#xff0c;请各组成员根据自己的爱好任选一题。 题目1&#xff1a; 我们在刚开始上课的时候介绍…

交换机组播风暴_广播风暴的成因以及解决办法有哪些?

广播风暴就是因为以太网中出现了明环或暗环&#xff0c;引起广播包被指数涨速递增&#xff0c;整个网络流量被广播包占据&#xff0c;其他的转发业务不能进行。以太交换机对广播包的处理&#xff0c;是不管从哪个端口收到广播包&#xff0c;都完整地复制一份转发到其他端口(除接…

inotify用法简介及结合rsync实现主机间的文件实时同步

一、inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统&#xff08;API&#xff09;&#xff0c;它提供了一种监控文件系统&#xff08;基于inode的&#xff09;事件的机制&#xff0c;可以监控文件系统的变化如文件修改、新增、删除等&#xff0c;并…

[转] 64位windows下添加postgreSQL odbc数据源

系统环境&#xff1a;windows7 64位 postgreSQL9.0&#xff08;64bit)ps&#xff1a;安装postgreSQL时确定安装了odbc驱动。问题&#xff1a;点击“开始-》控制面板-》管理工具-》数据源&#xff08;ODBC&#xff09;-》用户DSN-》添加”&#xff0c;未出现postgreSQL关联选项。…