题目描述

SGOI 旅游局在 SG-III 星团开设了旅游业务,每天有数以万计的地球人来这里观光,包括联合国秘书长,各国总统和 SGOI 总局局长等。旅游线路四通八达,每天都有众多的载客太空飞船在星团的星球之间来往穿梭,他们保证了任意两个星球之间总是可以通过航道到达。

但是,最近由于财政出现了困难,一些太空飞船也过于古老,又没有足够的资金购买新产品,所有只好取消一些航道。如果某一条航道的删除使得一些星球不能到达,那么这条航道是不能删除的,称之为「主要航道」。

SGOI 旅游局局长希望知道主要航道的数目,但是航道较多,他不能手工计算,于是,他委托你写一个程序,计算主要航道数目。

输入格式

输入文件包含若干组数据。

每组数据的首行有两个数 m,n 。星球的编号从 1 到 m 。

以下 n 行每行用两个整数 a,b 描述一条航道的信息,表示从星球 a 到星球 b 是有航道的。数据由 SGOI 旅游局提供,你无需担心数据有错。

输入文件以一行0 0为结束。

输出格式

输出文件共有 C 行,第 i 行仅有一个数,表示第 i 组输入数据的主要行道数目。

样例

样例输入

  1. 2 1
  2. 1 2
  3. 0 0

样例输出

  1. 1

数据范围与提示

 1<=m,n<=3e4,1<=a,b<=m
 

_________________________________

求图中桥的数量

_________________________________

  1. 1 #include<bits/stdc++.h>
  2. 2 using namespace std;
  3. 3 const int maxn=3e4+10;
  4. 4 struct edge
  5. 5 {
  6. 6 int u,v,nxt,nok;
  7. 7 }e[maxn<<1];
  8. 8 int head[maxn],js;
  9. 9 void addage(int u,int v)
  10. 10 {
  11. 11 e[++js].u=u;e[js].v=v;
  12. 12 e[js].nxt=head[u];head[u]=js;
  13. 13 }
  14. 14 int n,m;
  15. 15 int dfn[maxn],low[maxn],cnt;
  16. 16 inline int dz(int x)
  17. 17 {
  18. 18 return x&1?x+1:x-1;
  19. 19 }
  20. 20 int ans;
  21. 21 void tarjan(int u)
  22. 22 {
  23. 23 low[u]=dfn[u]=++cnt;
  24. 24 for(int i=head[u];i;i=e[i].nxt)
  25. 25 if(!e[i].nok)
  26. 26 {
  27. 27 int v=e[i].v;
  28. 28 e[dz(i)].nok=1;
  29. 29 if(!dfn[v])
  30. 30 {
  31. 31 tarjan(v);
  32. 32 low[u]=min(low[u],low[v]);
  33. 33 if(low[v]>dfn[u])ans++;
  34. 34 }
  35. 35 else low[u]=min(low[u],dfn[v]);
  36. 36 }
  37. 37 }
  38. 38 void init()
  39. 39 {
  40. 40 js=0;
  41. 41 memset(head,0,sizeof head);
  42. 42 ans=0;
  43. 43 memset(low,0,sizeof low);
  44. 44 memset(dfn,0,sizeof dfn);
  45. 45 memset(e,0,sizeof e);
  46. 46 cnt=0;
  47. 47 }
  48. 48 int main()
  49. 49 {
  50. 50 while(scanf("%d%d",&n,&m),n|m)
  51. 51 {
  52. 52 init();
  53. 53 for(int u,v,i=0;i<m;++i)
  54. 54 {
  55. 55 scanf("%d%d",&u,&v);
  56. 56 addage(u,v);
  57. 57 addage(v,u);
  58. 58 }
  59. 59 tarjan(1);
  60. 60 printf("%d\n",ans);
  61. 61 }
  62. 62 return 0;
  63. 63 }

LOJ10102旅游航道的更多相关文章

  1. loj10102 旅游航道

    传送门 分析 一道喜闻乐见的求桥的板子题. 代码 #include<iostream> #include<cstdio> #include<cstring> #in ...

  2. bzoj1393 旅游航道

    Description SGOI旅游局在SG-III星团开设了旅游业务,每天有数以万计的地球人来这里观光,包括联合国秘书长,各国总统和SGOI总局局长等.旅游线路四通八达,每天都有总躲得载客太空飞船在 ...

  3. loj题目总览

    --DavidJing提供技术支持 现将今年7月份之前必须刷完的题目列举 完成度[23/34] [178/250] 第 1 章 贪心算法 √ [11/11] #10000 「一本通 1.1 例 1」活 ...

  4. Tarjan-割点&桥&双连通

    $Tarjan$求割点 感觉图论是个好神奇的东西啊,有各种奇奇怪怪的算法,而且非常巧妙. 周末之前说好回来之后进行一下学术交流,于是wzx就教了$Tarjan$,在这里我一定要说: wzx  AK   ...

  5. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  6. LOJ 一本通一句话题解系列:

    第一部分 基础算法 第 1 章 贪心算法 1):「一本通 1.1 例 1」活动安排:按照结束时间排序,然后扫一遍就可以了. 2):「一本通 1.1 例 2」种树:首先要尽量的往区间重叠的部分种树,先按 ...

  7. 旅游公司招聘Java工程师

    公司招聘:岗位要求如下 Java开发工程师工作内容1.根据需求完成软件系统代码的开发,测试以及文档撰写工作:2.分析并解决客户的问题:3.配合业务部门进行数据分析以及系统优化 岗位要求:1.本科以上学 ...

  8. 基于GIS的旅游辐射区人口统计

    在旅游规划中,考虑旅游景点周边的人口负载量是很重要的一个方面,这将直接影响资源的投入和配置,开发潜力和规模等.基于GIS可以将人口信息进行空间化的展示,还可以通过空间分析的方法计算出旅游景点辐射区的人 ...

  9. Java基础-多线程编程-1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。

    1.随便选择两个城市作为预选旅游目标.实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市.分别用Runnable接口和Thread ...

随机推荐

  1. 安装交叉编译工具arm-linux-gcc-4.3.2 并且修改环境变量

    安装交叉编译工具arm-linux-gcc-4.3.2 2011-07-08 00:55:28|  分类: 嵌入式|举报|字号 订阅     环境:Fedora 9STEP 1: 下载arm-linu ...

  2. Ubuntu和UOS+mips64l龙芯处理器安装编译Openssl

    1.下载openssl开发包文件,我这里下载的是openssl-1.1.1f.tar.gz:并放在/data/home/dengchaoqun/openssl1.1.1目录下 2.终端切换到当前目录下 ...

  3. 在php里做js操作

    'echo <script>js_operation</script>';

  4. Date、SimpleDateFormat以及Calendar

    Date类 毫秒值 java.util.Date:表示日期和时间的类 类Date表示特定的瞬间,精确到毫秒 日期转毫秒,号秒转日期 中国属于东八区,会把事件增加8个小时 1天 = 4 * 60 * 6 ...

  5. 一些php文件函数

    当读入一个巨大的字符串的时候不能使用file_get_contents('文件名') 应该 使用fopen('文件名','r') feof('文件名')  //判断是否读到了文件结尾 ******** ...

  6. C# 修改PNG图片metadata信息 (含转载fancyblogs博文)

    WPF中使用 metadata-extractor可以轻松获取 PNG图片metadata信息 NuGet 获取地址: PM> Install-Package MetadataExtractor ...

  7. 算法历练之路——入学考试(JAVA)

    入学考试 时间限制: 1Sec 内存限制: 128MB 提交: 42 解决: 18 题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界 上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断 ...

  8. fastjson复现项目代码

    详情请见:https://www.cnblogs.com/yunmuq/p/14268028.html 以下是代码 // FastjsonDemo.java package test; import ...

  9. C语言实现九大排序算法

    C语言实现九大排序算法 直接插入排序 折半插入排序 希尔排序 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 基数排序 C语言实现九大排序算法 直接插入排序 将数组分为两个部分,一个是有序部分,一 ...

  10. 面试官:你真的了解Redis分布式锁吗?

    什么是分布式锁 说到Redis,我们第一想到的功能就是可以缓存数据,除此之外,Redis因为单进程.性能高的特点,它还经常被用于做分布式锁. 锁我们都知道,在程序中的作用就是同步工具,保证共享资源在同 ...