/*
给定无向图,求加入一条边后最少剩下多少桥
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 200005
#define maxm 1000005
struct Edge{int to,nxt,cut;}edge[maxm<<],edge_c[maxm<<];
int head[maxn],tot,head_c[maxn],tot_c,n,m,q; void addedge(int u,int v){
edge[tot].to=v;edge[tot].nxt=head[u];head[u]=tot++;
edge[tot].cut=;
}
void add_c(int u,int v){
edge_c[tot_c].to=v;
edge_c[tot_c].nxt=head_c[u];
head_c[u]=tot_c++;
} int dfn[maxn],low[maxn],ind,c[maxn],dcc;
void tarjan(int u,int in_edge){
dfn[u]=low[u]=++ind;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(!dfn[v]){
tarjan(v,i);
low[u]=min(low[u],low[v]); if(dfn[u]<low[v])
edge[i].cut=edge[i^].cut=;
}
else if(i!=(in_edge^))
low[u]=min(low[u],dfn[v]);
}
}
void dfs1(int u){
c[u]=dcc;
for(int i=head[u];i!=-;i=edge[i].nxt){
int v=edge[i].to;
if(c[v]||edge[i].cut)continue;
dfs1(v);
}
} int dep[maxn],fa[maxn],flag[maxn];//flag[u]表示u上点的边使割边
void dfs2(int u,int pre,int deep){
dep[u]=deep;fa[u]=pre;flag[u]=;
for(int i=head_c[u];i!=-;i=edge_c[i].nxt){
int v=edge_c[i].to;
if(v==pre)continue;
dfs2(v,u,deep+);
}
} void init(){
memset(head,-,sizeof head);
memset(head_c,-,sizeof head_c);
memset(dep,,sizeof dep);
memset(fa,,sizeof fa);
memset(flag,,sizeof flag);
memset(c,,sizeof c);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
tot=tot_c=ind=dcc=;
}
int main(){
int tt=;
while(cin>>n>>m,n){
init();
for(int i=;i<=m;i++){
int u,v;
scanf("%d%d",&u,&v);
addedge(u,v);
addedge(v,u);
}
tarjan(,); dcc=;//染色
for(int i=;i<=n;i++)
if(!c[i]){
++dcc;
dfs1(i);
} for(int i=;i<tot;i++){//缩点
int v=edge[i].to,u=edge[i^].to;
if(c[u]==c[v])continue;
add_c(c[u],c[v]);
} int Max=-,root=;
dfs2(root,,);
for(int i=;i<=dcc;i++)
if(Max<dep[i]){
Max=dep[i];
root=i;
}
memset(dep,,sizeof dep);
dfs2(root,,);
for(int i=;i<=dcc;i++)
Max=max(Max,dep[i]); cout<<dcc--Max<<endl; }
return ;
}

hdu4612 卡cin e-DCC缩点的更多相关文章

  1. acdream B - 郭式树 (水题 卡cin,cout, 卡LL)

    题目 输入正好是long long的最大, 但是答案超long long 所以用unsigned, 不能用cin cout否则一定超时: 不能用abs(), abs 只用于整数. unsigned   ...

  2. HDU4612:Warm up(缩点+树的直径)

    Warm up Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Su ...

  3. 剖析信用卡 DCC 交易

    摘要: 所谓DCC交易(Dynamic Currency Conversion,直译:动态货币转换 ),或者叫CPC交易(Cardholder Preferred Currency,直译:持卡人选定货 ...

  4. HDU-1827-Summer Holiday(强连通分量,贪心)

    链接:https://vjudge.net/problem/HDU-1827 题意: 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,虽然他手上有所 ...

  5. Mathematics:Find a multiple(POJ 2356)

    找组合 题目大意:给你N个自然数,请你求出若干个数的组合的和为N的整数倍的数 经典鸽巢原理题目,鸽巢原理的意思是,有N个物品,放在N-1个集合中,则一定存在一个集合有2个元素或以上. 这一题是说有找出 ...

  6. 生成1~n的全排列

    输入正整数n,输出n的全排列. 样例输入1: 3 样例输出1: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 分析: 按字典序从小到大的顺序输出所有的排列. (字典序:两个序 ...

  7. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...

  8. [BZOJ1012] [JSOI2008] 最大数maxnumber (ST表)

    Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...

  9. HNOI 2012 永无乡

    codevs 1477 永无乡 http://codevs.cn/problem/1477/ 2012年湖南湖北省队选拔赛  时间限制: 1 s  空间限制: 128000 KB   题目描述 Des ...

随机推荐

  1. iic 之24C256存储器 及PCF8563

    参考文章: http://www.21ic.com/jichuzhishi/mcu/memory/2013-02-28/159439.html 完整的例子: http://blog.csdn.net/ ...

  2. json数据交互

    springmvc 的json数据交互 - 哎幽的成长 - CSDN博客--和老师讲课相同http://blog.csdn.net/u012373815/article/details/4720818 ...

  3. 如何在eclipse安装apk包

    如何在eclipse安装下载好的apk包 好像是有好几种方法,我成功的是这种. 1.首先启动模拟器,我选择的是Android 4.2.2,因为...默认安得Android 7.1.1起不了,真是大坑, ...

  4. ECharts.js学习(一) 简单入门

    EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比 ...

  5. 项目中常用的SQL语句(SQL SERVER2008R2专版)

    1.exists 关键字的使用 /****** Script for SelectTopNRows command from SSMS ******/ SELECT [RoleId] ,[RoleOr ...

  6. Palindrome Number & Reverse Integer

    Determine whether an integer is a palindrome. Do this without extra space. 分析:把一个数倒过来,然后看两个数是否相同. pu ...

  7. Codeforces 1091E New Year and the Acquaintance Estimation Erdős–Gallai定理

    题目链接:E - New Year and the Acquaintance Estimation 题解参考: Havel–Hakimi algorithm 和 Erdős–Gallai theore ...

  8. <第一站>人生的第一个博客

    在畅畅的疯狂暗示下(“最好”建个博客),我决定在博客园开通我的博客,在此记入我从3月23起的所学所想.在他的提醒之前,我曾经断断续续的在日记本上,手机备忘录里记录过我的学习情况和心路历程,总的来说,自 ...

  9. ffmpeg 加载双语字幕

    set infile=in.mp4 set subfile1=cn.srt set subfile2=en.srt set subvf1="subtitles=%subfile1%:forc ...

  10. 函数-->指定函数--->默认函数--->动态函数--> 动态参数实现字符串格式化-->lambda表达式,简单函数的表示

    #一个函数何以接受多个参数#无参数#show(): ---> 执行:show() #传入一个参数 def show(arg): print(arg) #执行 show(123) #传入两个参数 ...