【问题描述】

n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接。因电子设备容易损坏,需给通讯点配备备用交换机。但备用交换机数量有限,不能全部配备,只能给部分重要城市配置。于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配备备用交换机。请你根据城市线路情况,计算需配备备用交换机的城市个数,及需配备备用交换机城市的编号。
【输入格式】
输入文件有若干行
第一行,一个整数n,表示共有n个城市(2<=n<=100)
下面有若干行,每行2个数a、b,a、b是城市编号,表示a与b之间有直接通讯线路。
【输出格式】
输出文件有若干行
第一行,1个整数m,表示需m个备用交换机,下面有m行,每行有一个整数,表示需配备交换机的城市编号,输出顺序按编号由小到大。如果没有城市需配备备用交换机则输出0。
【输入输出样例】

输入文件名: gd.in

7

1 2

2 3

2 4

3 4

4 5

4 6

4 7

5 6

6 7

 

输出文件名:gd.out

2

2

4

/*
tarjan求割点
dfs一边,满足下面两种情况之一的节点就是割点
①v是根节点,并且它有超过两个子节点。
②v不是叶子节点,并且v的子节点w没有返祖边(即low[w]>=dfs[v])
*/
#include<iostream>
#include<cstdio>
#define M 110
using namespace std;
int num[M],low[M],s[M*],instack[M],vis[M],top,indexx;
int ok[M],head[M],tot,c1,n,m,cnt;
struct node
{
int v,pre;
};node e[M*M*];
void add(int x,int y)
{
cnt++;
e[cnt].v=y;
e[cnt].pre=head[x];
head[x]=cnt;
}
void tarjan(int v)
{
num[v]=low[v]=++indexx;
instack[v]=vis[v]=;
s[++top]=v;
for(int i=head[v];i;i=e[i].pre)
{
int w=e[i].v;
if(!vis[w])
{
if(v==)c1++;
tarjan(w);
low[v]=min(low[w],low[v]);
if(v!=&&low[w]>=num[v])ok[v]=;
}
else if(instack[w])
low[v]=min(num[w],low[v]);
}
}
int main()
{
freopen("gd.in","r",stdin);
freopen("gd.out","w",stdout);
scanf("%d",&n);
int x,y;
while(scanf("%d%d",&x,&y)!=EOF)
{
add(x,y);add(y,x);
}
tarjan();
if(c1>=)ok[]=;
for(int i=;i<=n;i++)
if(ok[i])
{
printf("%d\n",i);
break;
}
return ;
}

备用交换机(cogs 8)的更多相关文章

  1. COGS——T 8. 备用交换机

    http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存 ...

  2. cogs——8. 备用交换机

    8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直 ...

  3. CGOS 8 备用交换机(割点)

    题目链接:http://cojs.tk/cogs/problem/problem.php?pid=8 题意:n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏 ...

  4. 图的割点 | | jzoj【P1230】 | | gdoi | |备用交换机

    写在前面:我真的不知道图的割点是什么.... 看见ftp图论专题里面有个dfnlow的一个文档,于是怀着好奇的心情打开了这个罪恶的word文档,,然后就开始漫长的P1230的征讨战.... 图的割点是 ...

  5. COGS8 备用交换机

    备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间 ...

  6. COGS 08-备用交换机 题解——S.B.S.

    8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直 ...

  7. RabbitMQ 备份交换机(alternate-exchange)介绍

    RabbitMQ之备份交换机(alternate-exchange) 1.备份交换器,AlternateExchange(AE) 备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性al ...

  8. {part1}DFN+LOW(tarjan)割点

    什么是jarjan? 1)求割点 定义:在无向连通图中,如果去掉一个点/边,剩下的点之间不连通,那么这个点/边就被称为割点/边(或割顶/桥). 意义:由于割点和割边涉及到图的连通性,所以快速地求出割点 ...

  9. tarjan算法求割点cojs 8

    tarjan求割点:cojs 8. 备用交换机 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网 ...

随机推荐

  1. [C陷阱和缺陷] 第1章 词法“陷阱”

    有感自己的C语言在有些地方存在误区,所以重新仔细把"C陷阱和缺陷"翻出来看看,并写下这篇博客,用于读书总结以及日后方便自身复习. 第1章 词法"陷阱" 1.1 ...

  2. 网络爬虫之scrapy框架(CrawlSpider)

    一.简介 CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能之外,还派生了其自己独有的更强大的特性和功能.其中最显著的功能就是"LinkExtractor ...

  3. Spring抽象JDBC,使用JdbcTemplate

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  4. JS数组、outerHtml、className

    //对象转换为数组function obj(){for(var i=0;i<arguments.length;i++){ this[i]=arguments[i]; }} var o2=new ...

  5. ADB Usage Complete / ADB 用法大全

    ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具. 持续更新中,欢迎提 PR 和 Issue 补充指 ...

  6. 238 Product of Array Except Self 除自身以外数组的乘积

    一个长度为 n 的整形数组nums,其中 n > 1,返回一个数组 output ,其中 output[i] 等于nums中除nums[i]以外所有元素的乘积.不用除法 且在O(n)内解决这个问 ...

  7. [转]微信开发.Net 接入示例

    本文转自:http://my.oschina.net/lcak/blog/219618 微信公众平台接口开发官方仅提供了 PHP 接入示例代码, 网上找到的.Net代码多半需要积分下载, 所以自己写了 ...

  8. LN : leetcode 53 Maximum Subarray

    lc 53 Maximum Subarray 53 Maximum Subarray Find the contiguous subarray within an array (containing ...

  9. 两个input可能会用到的小方法

    1.一个普通的input元素,在不被 form包裹的时候,如何跳转或搜索 var oInput = document.getElementsByTagName('input')[0]; oInput. ...

  10. JavaScript(十三)面向对象

    面向对象 面向对象的过程 通过new 构造函数 生成的对象来执行, 类似于事件的执行  this指向函数,然后再把这个函数赋值给一个实例  所以在函数内的this  就指到了实例上 function ...