写在前面:我真的不知道图的割点是什么。。。。

看见ftp图论专题里面有个dfnlow的一个文档,于是怀着好奇的心情打开了这个罪恶的word文档,,然后就开始漫长的P1230的征讨战。。。。

图的割点是这样的:

  path1=暴力      

    枚举每一个点,如果去掉这个点就可以使图断开,那么这个点就是割点(时间复杂度O(N(N+M)))

  path2=tarjan     

    从任意一个点开始遍历,记录遍历的顺序,然后对正在遍历的点进行一次深度优先遍历,但是此次遍历不允许经过这个点,看看还能不能回到前一个点    

    这时候我们就可以再定义一个数组low,这个数组用来记录每个顶点在不经过前一个遍历的顶点时,能够回到的最近(就是截止到此顶点最后被遍历)的结点

    如果存在一个顶点u,图中一个顶点v满足low[v]>=num[u](num是遍历的顺序),那么u就是割点

 

 

problem set:

n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接。因电子设备容易损坏,需给通讯点配备备用交换机。但备用 交换机数量有限,不能全部配备,只能给部分重要城市配置。于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配备备 用交换机。请你根据城市线路情况,计算需配备备用交换机的城市个数,及需配备备用交换机城市的编号。

很明显这个题是割点:

但是有一个坑~~

最开始写的是邻接矩阵,,看看能不能过,想着邻接矩阵能过小数据以后改成邻接表就能过大数据了

然而最开始还是too young

别忘了题目描述里并没有说图一定联通;

也就是说我们必须对每一个点都进行遍历,而且不要忘了对根节点的判断。。。

代码实现如下

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,root;
int num[],low[],flag[],index;//index==++
int in[],stack[];
int sum=;
struct edge
{
int y,next;
}e[];
int len=;
int link[]; void insert(int xx,int yy)
{
e[++len].next=link[xx];link[xx]=len;
e[len].y=yy;
} int top;
void dfs(int cur)
{
int v;
num[cur]=low[cur]=++index;
stack[++top]=cur;
in[cur]=;
int temp=;
for(int i=link[cur];i;i=e[i].next)
{
v=e[i].y;
if(!num[v])
{
dfs(v);
temp++;
low[cur]=min(low[cur],low[v]);
//if(low[v]>=num[cur]&&cur!=1)
// flag[cur]++;
if((cur==root && temp>)||(cur!=root && low[v]>=num[cur]))
if(!flag[cur]) flag[cur]++,sum++;
}
else if(in[v])
low[cur]=min(low[cur],num[v]);
}
if(low[cur]==num[v])
{
while(cur!=v)
{
v=stack[top--];
in[v]=;
}
}
} int main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
int x,y;
cin>>n;
while(cin>>x>>y)
{
insert(x,y);
insert(y,x);
}
for(int i=;i<=n;i++)
{
if(!num[i])
{
root=i;
dfs(i);
}
} cout<<sum<<endl;
for(int i=;i<=n;i++)
{
if(flag[i])
cout<<i<<endl;
}
return ;
}

图的割点 | | jzoj【P1230】 | | gdoi | |备用交换机的更多相关文章

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

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

  2. 图的割点 桥 双连通(byvoid)

    [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合.一个图的点连通度的定义为,最小割点集 ...

  3. COGS8 备用交换机

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

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

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

  5. 备用交换机(cogs 8)

    [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机.但备用交换机数量有限,不能全部配备,只能给部分重要城市配置.于是规 ...

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

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

  7. Tarjan算法:求解图的割点与桥(割边)

    简介: 割边和割点的定义仅限于无向图中.我们可以通过定义以蛮力方式求解出无向图的所有割点和割边,但这样的求解方式效率低.Tarjan提出了一种快速求解的方式,通过一次DFS就求解出图中所有的割点和割边 ...

  8. Tarjan算法:求解无向连通图图的割点(关节点)与桥(割边)

    1. 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point).一个没有关节点的 ...

  9. HDU - 3671 Boonie and Clyde (图的割点)

    As two icons of the Great Depression, Bonnie and Clyde represent the ultimate criminal couple. Stori ...

随机推荐

  1. 解决linux yum无法安装mysql

    yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 wget http://repo.mysql.com/mysql-com ...

  2. ApexSQLLog总结

    我们程序最近做更新,要做新功能的测试.程序经常出现大的事务,每次commit之后如果发现数据不对的问题也不能再回滚进行断点调试了,因为数据库数据已经更改了,所以一直想找一个回滚我数据库所有操作的工具. ...

  3. js call 以及apply

    用实例来讲:一半什么场合用到bind.call.apply呢? [一个对象 A]的方法被[另一个对象 B][引用]的时候(请注意 引用 的意思,区分调用 ):[对象A]的方法内的this作用域就不指向 ...

  4. Set,List,Map,Vector,ArrayList的区别(转)

    JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtab ...

  5. rabbitMQ学习(六)

    请求模式 客户端: import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; impor ...

  6. python2.6.6安装Image模块

    python2.6.6安装Image模块1.下载Image模块源码地址:http://www.pythonware.com/products/pil/index.htm2.加压文件#tar zxvf ...

  7. win7和Ubuntu双系统折腾记

    哎,最近老是写些没涵养的博客.哥们问我怎么不分享点cv的论文思路,或者搞点深度学习调参的经验.因为真正跑深度学习搞 计算机视觉的时候,时间悄悄过去了,只有环境出Bug了,才是我最难受的时候,每一次搞好 ...

  8. elasticsearch同义词及动态更新

    第一种:参考地址:http://dev.paperlesspost.com/setting-up-elasticsearch-synonyms/271.Add a synonyms file.2.Cr ...

  9. Flash Builder常见菊紧问题集锦

    FB的错误多多,不定什么时候就让你蛋碎,路遇操蛋问题集锦如下: 1.有次用Flash Builder 4.7,打开之后马上自动关闭,试了几次都这样,解决办法如下: 到C:\Documents and ...

  10. HealthKit的使用

    一.项目中关联HealthKit框架 1.在Capabilities选项中打开HealthyKit选项 HealthKit关联路径 首先填写好你项目的Bundle Identifier并且选好Team ...