zoj 1119 SPF (tarjan求割点的联通分量数)
来源:互联网 发布:c4dr19中文版软件下载 编辑:程序博客网 时间:2024/04/28 12:22
题目地址
题目大意:给出多组边的关系,求图中割点的联通分量数
解题思路:tarjan求割点裸题,再加一个数组用来记录每个割点的联通分量数
#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <cstring>#include <queue>#include <string>#include <map>#include <stack>#include <list>using namespace std;const int maxn = 1000+10;int dfn[maxn],low[maxn],cut[maxn],head[maxn];//dfn表示时间戳,low表示最小的祖先,cut表示该点的联通分量个数,head表示头节点的编号int index,num,edge;//index表示时间戳,num表示表头节点的编号,edge表示编号最大的点struct Node{ int v; int next;}node[maxn*maxn];void Init(){ memset(dfn,-1,sizeof(dfn)); memset(head,-1,sizeof(head)); index = num = edge = 0;}void addedge(int u,int v) //构造静态链表{ node[num].v = v; node[num].next = head[u]; head[u] = num++;}//对有向图void Tarjan(int u){ low[u] = dfn[u] = index++; for(int i = head[u]; i != -1; i = node[i].next) { int v = node[i].v; if(dfn[v] == -1) //当v点不在栈中时 { Tarjan(v); if(dfn[u] <= low[v]) //若v点的祖先不能到u点 { cut[u]++; } else //若v点能返回到u点之前 { low[u] = min(low[u],low[v]); } } else//当v点在栈中 { low[u] = min(dfn[v],low[u]); } }}int main(){ int n,m; int cas = 1; while(scanf("%d",&n) != EOF && n) { Init(); scanf("%d",&m); n--; //从0开始编号 m--; addedge(n,m); addedge(m,n); edge = max(edge,max(n,m)); while(scanf("%d",&n) != EOF && n) { scanf("%d",&m); n--; m--; addedge(n,m); addedge(m,n); edge = max(edge,max(n,m)); } cut[0] = 0; //0为根节点 for(int i = 1; i < edge; i++) //本身也是一个联通分量 cut[i] = 1; Tarjan(0); printf("Network #%d\n",cas++); int flag = 0; for(int i = 0; i < edge; i++) { if(cut[i] > 1) { flag = 1; printf(" SPF node %d leaves %d subnets\n",i+1,cut[i]); } } if(!flag) printf(" No SPF nodes\n"); } return 0;}
0 0
- zoj 1119 SPF (tarjan求割点的联通分量数)
- ZOJ 1119 SPF(tarjan求割点)
- 强联通分量的tarjan算法
- poj 2553 zoj 1979 The Bottom of a Graph(强联通分量 Tarjan)
- POJ 1523 SPF 求割点及对应的连通分量数(入门题)
- tarjan模板(强联通分量)
- poj1236 强联通分量(tarjan)
- 强联通分量-tarjan
- [POJ1523]SPF(tarjan求割点)
- POJ 1523 SPF(Tarjan 求解连通分量)
- ZOJ 3620 Information(强联通分量)
- Tarjan算法---强联通分量
- hdu1269 tarjan强联通分量
- 强联通分量 Tarjan算法
- tarjan求强联通分量
- tarjan求强联通分量
- “tarjan陪伴强联通分量
- poj1523--C - SPF(连通分量,求割点)
- ajax上传文件的原理与实现
- js中date与String转换
- Number of Islands
- 鹰眼摄像头(OV7725)的使用
- 从五一促销“探营”运营商的薄利多销
- zoj 1119 SPF (tarjan求割点的联通分量数)
- linux 启动流程
- HTML(子页发布会)
- matlab subspace函数 求解矩阵子空间的夹角(链接)
- nginx配置
- Android EventBus实战 没听过你就out了
- java中#$作为字符串的分隔符,split的时候需要进行转义【否则会。。。。。】
- sqlserver 查询sql执行计划
- Socket连接与HTTP连接