博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[USACO06JAN]冗余路径Redundant Paths(缩点)
阅读量:4664 次
发布时间:2019-06-09

本文共 1965 字,大约阅读时间需要 6 分钟。

为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分离的路径,这样她们就有多一些选择.

每对草场之间已经有至少一条路径.给出所有R(F-1≤R≤10000)条双向路的描述,每条路连接了两个不同的草场,请计算最少的新建道路的数量, 路径由若干道路首尾相连而成.两条路径相互分离,是指两条路径没有一条重合的道路.但是,两条分离的路径上可以有一些相同的草场. 对于同一对草场之间,可能已经有两条不同的道路,你也可以在它们之间再建一条道路,作为另一条不同的道路.

 


 

将所有的点弄到一个环内

先缩点,在找到那些只有一个度的点

那就是需要连的点cnt个

ans=(cnt+1)>>1

#include
#define re return#define ll long long#define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std;template
inline void rd(T&x){ char c;bool f=0; while((c=getchar())<'0'||c>'9')if(c=='-')f=1; x=c^48; while((c=getchar())>='0'&&c<='9')x=x*10+(c^48); if(f)x=-x;}const int maxn=5005,maxm=10005;int n,m,k=1,tot,col,hd[maxn];int belong[maxn],low[maxn],dfn[maxn],d[maxn];struct node{ int to,nt;}e[maxm<<1];inline void add(int x,int y){ e[++k].to=y;e[k].nt=hd[x];hd[x]=k; e[++k].to=x;e[k].nt=hd[y];hd[y]=k;}stack
s;inline void dfs(int x,int fan){ dfn[x]=low[x]=++tot; s.push(x); for(int i=hd[x];i;i=e[i].nt) { int v=e[i].to; if(fan==(i^1))continue; //13->16 //16->13 //缩点引发的悲剧 if(!dfn[v]) { dfs(v,i); low[x]=min(low[x],low[v]); } else low[x]=min(low[x],dfn[v]); } if(dfn[x]==low[x]) { int v=-1; ++col; while(v!=x) { v=s.top(); s.pop(); belong[v]=col; } }}int main(){// freopen("in.txt","r",stdin); int x,y; rd(n),rd(m); inc(i,1,m) { rd(x),rd(y); add(x,y); } inc(i,1,n) if(!dfn[i])dfs(i,0); int ans=1; for(int i=2;i<=k;i+=2) { x=belong[e[i].to];y=belong[e[i^1].to]; if(x!=y) { ++d[x]; ++d[y]; } } inc(i,1,col) if(d[i]==1) ++ans; printf("%d",ans>>1); re 0;}

 

转载于:https://www.cnblogs.com/lsyyy/p/11420703.html

你可能感兴趣的文章
网络类型判断
查看>>
黑客dos命令大全
查看>>
Java开发必用的工具包
查看>>
https soap链接示例
查看>>
八LWIP学习笔记之用户编程接口(NETCONN)
查看>>
Git Day02,工作区,暂存区,回退,删除文件
查看>>
Docker安装MariaDB
查看>>
如何给app客户端进行埋点?
查看>>
结对第二次—文献摘要热词统计及进阶需求
查看>>
JavaWeb---总结(十三)使用Session防止表单重复提交
查看>>
JSP介绍(2)--- 九大隐式对象
查看>>
[置顶] .net技术类面试、笔试题汇总3
查看>>
JAVA操作Hbase基础例子
查看>>
js表达式和语句趣味题讲解与技术分享
查看>>
【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片
查看>>
Java多线程编程(五)定时器Timer
查看>>
如何正确使用const(常量),define(宏)
查看>>
Linux系统目录权限chmod误操作权限修复方法
查看>>
wp7中如和从app.xaml.cs中直接导航到程序的某个页面
查看>>
Eclipse Jee Neon打开时报错 code=13的问题
查看>>