【HDU3394】Railway
【题目描述】
有一个公园有n个景点,公园的管理员准备修建m条道路,并且安排一些形成回路的参观路线。如果一条道路被多条道路公用,那么这条路是冲突的;如果一条道路没在任何一个回路内,那么这条路是不冲突的
问分别有多少条有冲突的路和没有冲突的路
【题解】
这是一道点双联通的题,首先把图缩成块,显然如果块中边的数量大于点的数量,那么块中所有的边都是冲突的。
对于没有冲突的边,其实就是桥,tarjan的时候顺便求一下就行了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<algorithm>
using namespace std;
#define MAXN 10010
struct node{int y,next;}e[];
int n,m,ans1,ans2,len,top,dfs_clock,bcnt,belong[MAXN],Link[MAXN],dfn[MAXN],low[MAXN],stack[MAXN],vis[MAXN];
inline int read()
{
int x=,f=; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-; ch=getchar();}
while(isdigit(ch)) {x=x*+ch-''; ch=getchar();}
return x*f;
}
void insert(int x,int y) {e[++len].next=Link[x];Link[x]=len;e[len].y=y;}
void pre()
{
ans1=ans2=len=top=dfs_clock=;
memset(Link,,sizeof(Link));
memset(dfn,,sizeof(dfn));
}
void count()
{
int sum=;
for(int i=;i<=bcnt;i++)
{
int x=belong[i];
for(int j=Link[x];j;j=e[j].next)
if(vis[e[j].y]) sum++;
}
sum/=;
if(sum>bcnt) ans2+=sum;
}
void tarjan(int x,int father)
{
dfn[x]=low[x]=++dfs_clock;
stack[++top]=x;
for(int i=Link[x];i;i=e[i].next)
{
if(e[i].y==father) continue;
if(!dfn[e[i].y])
{
tarjan(e[i].y,x);
low[x]=min(low[x],low[e[i].y]);
if(low[e[i].y]>dfn[x]) ans1++;
if(low[e[i].y]>=dfn[x])
{
int y; bcnt=;
memset(vis,,sizeof(vis));
do
{
y=stack[top--];
vis[y]=;
belong[++bcnt]=y;
}while(e[i].y!=y);
belong[++bcnt]=x;
vis[x]=;
count();
}
}
else low[x]=min(low[x],dfn[e[i].y]);
}
}
void solve()
{
for(int i=;i<n;i++) if(!dfn[i]) tarjan(i,-);
printf("%d %d\n",ans1,ans2);
}
int main()
{
//freopen("cin.in","r",stdin);
//freopen("cout.out","w",stdout);
while(scanf("%d%d",&n,&m)==)
{
if(n==&&m==) break;
pre();
for(int i=;i<=m;i++) {int x=read(),y=read(); insert(x,y); insert(y,x);}
solve();
}
return ;
}
【HDU3394】Railway的更多相关文章
- 【题解】Railway [Uva10263]
[题解]Railway [Uva10263] 传送门:\(\text{Railway [Uva10263]}\) [题目描述] 给出点 \(M\) 以及一个由 \(n\) 条线段依次相连的类曲形图(由 ...
- 【poj2828】Buy Tickets 线段树 插队问题
[poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...
- 【POJ2774】Long Long Message (后缀数组)
Long Long Message Description The little cat is majoring in physics in the capital of Byterland. A p ...
- 【cogs247】售票系统【线段树】
售票系统 输入文件:railway.in 输出文件:railway.out 时间限制:1 s 内存限制:128 MB [问题描述] 某次列车途经C个城市,城市编号依次为1到C,列车上共有S个座位,铁路 ...
- 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜
实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
随机推荐
- ng 服务
服务的本质是单例对象,封装一些方法和属性的. 单例模式:在实例化变量的时候,如果该变量已经存在,直接返回该变量:如果不存在,就创建一个新的变量再返回 ng自带的服务有很多,常用:$location $ ...
- Unity3D开发之Matrix4x4矩阵变换
在Unity开发中时常会用到Matrix4x4矩阵来变换场景中对象的位置.旋转和缩放.但是很多人都不太理解这儿Matrix4x4变换矩阵.通过DX中的变换矩阵我来讲一讲在unity中这个变换矩阵是怎么 ...
- 旧书重温:0day2【7】堆溢出实验
相关文章我拍成了照片,放在了我的QQ空间不是做广告(一张一张的传太麻烦了)http://user.qzone.qq.com/252738331/photo/V10U5YUk2v0ol6/ 密码9 ...
- 对结合BDD进行DDD开发的一点思考和整理
引言 二十年前的我,还在学校里抱着一台DIY机(德州486+大众主板+16M内存+3.5inch软驱+昆腾320M硬盘,当时全校最快主机没有之一),揣着一本<Undocumented DOS&g ...
- 创建Oracle数据库需要注意的几点
规划表和存储空间,防止出现空间不足或者空间的浪费 规划快速恢复区,将快速恢复区定义在与数据文件不同的存储区域,减少IO争用 规划数据库的名称,db_name,db_main,sid 规划spfile内 ...
- Java [Leetcode 383]Ransom Note
题目描述: Given an arbitrary ransom note string and another string containing letters from al ...
- ASP.NET 线程详解
本文是博主翻译文章,估计会省略一些,但是我尽量能翻译好,各个知识点通俗易懂.译文如下: ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0 我简 ...
- k8s api server ha 连接配置问题
常见的lb 负载有硬件的f5 big-ip ,同时对于互联网公司大家常用的是nginx haproxy 了解k8s 集群高可用的都知道 api server 是无状态的(etcd 解决了),但是 ...
- Shell脚本基础知识详细介绍(一)
Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种 ...
- javaMail邮件接收解析内容及附件 及删除邮件
参考自: http://blog.csdn.net/xyang81/article/details/7675160 package com.szy.project.utils; import jav ...