POJ1523:SPF(无向连通图求割点)
题目:http://poj.org/problem?id=1523
题目解析:
注意题目输入输入,防止PE,题目就是求割点,并问割点将这个连通图分成了几个子图,算是模版题吧。
- #include <iostream>
- #include <stdio.h>
- #include <string.h>
- #include <algorithm>
- #include <stack>
- #include <string>
- #define N 10010
- using namespace std;
- struct node
- {
- int x,y,next;
- } eg[*N];
- int tt,head[N],dfn[N],low[N],ti,f[N];
- void init()
- {
- memset(head,-,sizeof(head));
- tt=;
- ti=;
- memset(dfn,,sizeof(dfn));
- memset(f,,sizeof(f));
- }
- void add(int xx,int yy)
- {
- eg[tt].x=xx;
- eg[tt].y=yy;
- eg[tt].next=head[xx];
- head[xx]=tt++;
- }
- void tarjan(int u,int fa)
- {
- dfn[u]=low[u]=ti++;
- int child=;
- for(int i=head[u]; i!=-; i=eg[i].next)
- {
- int v=eg[i].y;
- if(v==fa) continue;
- if(!dfn[v])
- {
- child++;
- tarjan(v,u);
- low[u]=min(low[u],low[v]);
- if(low[v]>=dfn[u]&&fa!=-)
- {
- f[u]++;
- }
- }
- else //无向图没有横跨边
- {
- low[u]=min(dfn[v],low[u]);
- }
- }
- if(fa<&&child>) f[u]=child-;
- }
- int main()
- {
- int xx,yy,u,v,K=,z;
- while(scanf("%d",&u)!=EOF&&u)
- {
- init();
- scanf("%d",&v);
- z=max(u,v);
- add(u,v);
- add(v,u);
- while(scanf("%d",&xx)!=EOF&&xx)
- {
- scanf("%d",&yy);
- z=max(z,max(xx,yy));
- add(xx,yy);
- add(yy,xx);
- }
- tarjan(,-);
- printf("Network #%d\n",++K);
- int sum=;
- for(int i=; i<=z; i++)
- {
- if(f[i])
- {
- sum++;
- printf(" SPF node %d leaves %d subnets\n",i,f[i]+);
- }
- }
- if(sum==)
- printf(" No SPF nodes\n");
- printf("\n");
- }
- return ;
- }
POJ1523:SPF(无向连通图求割点)的更多相关文章
- 无向连通图求割点(tarjan算法去掉改割点剩下的联通分量数目)
poj2117 Electricity Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 3603 Accepted: 12 ...
- POJ1144:Network(无向连通图求割点)
题目:http://poj.org/problem?id=1144 求割点.判断一个点是否是割点有两种判断情况: 如果u为割点,当且仅当满足下面的1条 1.如果u为树根,那么u必须有多于1棵子树 2. ...
- ZOJ 2588 Burning Bridges(无向连通图求割边)
题目地址:ZOJ 2588 由于数组开小了而TLE了..这题就是一个求无向连通图最小割边.仅仅要推断dfn[u]是否<low[v],由于low指的当前所能回到的祖先的最小标号,增加low[v]大 ...
- Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
历时好几天,终于完工了! 支持无向图四种功能:1.割点的求解 2.割边的求解 3.点双连通分量的求解 4.边双连通分量的求解 全部支持重边!!!!全部支持重边!!!!全部支持重边!!!! 测试数据: ...
- 无向连通图求割边+缩点+LCA
Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7082 Accepted: 2555 Descripti ...
- 无向连通图求割边(桥)hdu4738,hdu3849
点击打开链接 题目链接: hdu 4738 题目大意: 曹操有N个岛,这些岛用M座桥连接起来 每座桥有士兵把守(也可能没有) 周瑜想让这N个岛不连通,但只能炸掉一座桥 并且炸掉一座桥需要派出不 ...
- ZOJ2588:Burning Bridges(无向连通图求割边)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1588 吐下槽,不得不说ZOJ好坑,模版题做了一个多小时. 题意:* ...
- Network -UVa315(连通图求割点)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page=sh ...
- Tarjan算法:求解无向连通图图的割点(关节点)与桥(割边)
1. 割点与连通度 在无向连通图中,删除一个顶点v及其相连的边后,原图从一个连通分量变成了两个或多个连通分量,则称顶点v为割点,同时也称关节点(Articulation Point).一个没有关节点的 ...
随机推荐
- [转]各种编码ANSI、GB2312、GBK、GB18030、UNICODE以及UTF-8傻傻分不清!
计算机编程中的编码一直是让新手非常头疼的问题,特别是 GBK.GB2312.UTF-8 这三个比较常见的网页编码的区别,更是让许多新手晕头转向,怎么解释也解释不清楚,看一遍貌似懂了,但实际使用的时候又 ...
- Java 9的日期时间格式化趋近Unicode区域设置标准
1.JDK-8148947,DataTimeFormatter的模式字母“g”:正如在LDML中定义的,字母“g”指代一个“简化儒略日期”,简化儒略日期与正常儒略日期的差别在于:(1)简化儒略 ...
- 第四章 Spring.Net 如何管理您的类___让对象了解自己的容器
我们在开发中,经常需要让对象了解自己所在的容器的信息,例如,有时我们需要让对象知道,对象所在容器的引用是什么,或者是对象在容器中的名称是什么 .Spring.Net 中提供了两个接口,我们使用这两个接 ...
- c# T obj = default(T);
泛型类和泛型方法同时具备可重用性.类型安全和效率,这是非泛型类和非泛型方法无法具备的.泛型通常用在集合和在集合上运行的方法中..NET Framework 2.0 版类库提供一个新的命名空间 Syst ...
- swift--使用UserDefaults来进行本地数据存储
UserDefaults适合轻量级的本地客户端存储,存储一个值,新值可以覆盖旧值,可以重复存储,也可以存储一次,然后直接从UserDefaults里面读取上次存储的信息,很方便,用的时候,宏定义下,直 ...
- Java架构学习 转(Spring+SpringMVC+MyBatis+easyUI)
Spring+SpringMVC+MyBatis+easyUI : http://www.cnblogs.com/han-1034683568/p/6730869.html
- DiscuzX的目录权限设置1
经常有朋友遇到Discuz目录权限设置出错的问题,网上千奇百怪的教程非常多,所谓的终极安全的教程更是满天飞,各种所谓的安全加强软件也随处可见,可实际过程中发现,老手用不上,新手则只会因为这些东西徒增麻 ...
- 如何配置samba 要求共享文件夹public
第一步:在根下执行:mkdir /public 修改下权限:chmod 777 /public第二步:vi /etc/samba/smb.conf修改如下配置:修改security = user为se ...
- java生成webservice方法
参考: https://note.youdao.com/ynoteshare1/index.html?id=c10324bb3b794baece3d2ae9faadc5c1&type=note
- 关于MultiByteToWideChar与WideCharToMultiByte代码测试(宽字符与多字节字符的转换)以及字符串的转换代码测试
#pragma once #include <stdio.h> //getchar() #include <tchar.h> #include <stdlib.h> ...