poj1523赤裸裸的割点

2023-10-23 09:10
文章标签 割点 赤裸裸 poj1523

本文主要是介绍poj1523赤裸裸的割点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这题真是没什么好说的。。。赤裸裸的求割点直接模板上

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<vector>
 5 #define maxn 1100
 6 
 7 using namespace std;
 8 
 9 vector<int> g[maxn];
10 int dfn[maxn],low[maxn];
11 int vis[maxn],cnt[maxn];
12 int k=1,f=0,index=0,m;
13 void dfs(int x)
14 {
15  //   cout<<"1"<<endl;
16     int c=0;
17     for(int i=0;i<g[x].size();i++)
18     {
19         int e=g[x][i];
20         if(vis[e]==0)
21         {
22             dfn[e]=low[e]=++index;
23             vis[e]=1;
24             dfs(e);
25             low[x]=min(low[e],low[x]);
26             if(low[e]>=dfn[x])
27             {
28                 cnt[x]++;
29             }
30         }
31         else low[x]=min(low[x],dfn[e]);
32     }
33 }
34 void solve()
35 {
36     f=index=0;
37     memset(dfn,0,sizeof(dfn));
38     memset(cnt,0,sizeof(cnt));
39     memset(vis,0,sizeof(vis));
40     memset(low,0,sizeof(low));
41     printf("Network #%d\n",k++);
42     vis[1]=1;
43     dfn[1]=low[1]=++index;
44     dfs(1);
45     if(cnt[1]>=1) cnt[1]--;
46     for(int i=1;i<=m;i++)
47     {
48         if(cnt[i])
49         {
50             printf("  SPF node %d leaves %d subnets\n",i,cnt[i]+1);
51             f=1;
52         }
53     }
54     if(f==0) printf("  No SPF nodes\n");
55     printf("\n");
56 }
57 int main()
58 {
59     int a,b;
60     while(scanf("%d",&a)!=EOF)
61     {
62         for(int i=1;i<=maxn;i++)
63             g[i].clear();
64         if(a==0) break;
65         scanf("%d",&b);
66         g[a].push_back(b);
67         g[b].push_back(a);
68         m=a<b?b:a;
69         while(1)
70         {
71              int x,y;
72              scanf("%d",&x);
73              if(x==0) break;
74              scanf("%d",&y);
75              g[x].push_back(y);
76              g[y].push_back(x);
77              m=m>x?m:x;
78              m=m>y?m:y;
79         }
80         solve();
81     }
82     return 0;
83 }
View Code

 

这篇关于poj1523赤裸裸的割点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/266875

相关文章

图的割点、割线问题

图的割点问题 邻接矩阵表示图 package com.hyl.algorithm.other;import java.util.Arrays;import com.hyl.algorithm.search.base.SearchIntf;import com.hyl.algorithm.search.base.SearchIntfFactory;/*** 寻找图的割点* <p>** @aut

HIHO #1183 : 连通性一·割边与割点

题目链接 使用Tarjan算法计算无向图的割点和桥,提示讲解的也很清晰 需要注意的是,某一个割点可能会被多次计算,所以一般是先记录然后最后统一输出 1)按照题目的伪代码直接实现 2)稍微优化一下的,省一些空间 #include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define

P3388 【模板】割点(割顶)

~~~~~      P3388 【模板】割点(割顶) ~~~~~      总题单链接 割点的定义 ~~~~~      在一张无向图中,若删除一个点后连通块的数量会增加,那这个点就是割点。 怎么找割点 ~~~~~      按 d f s dfs dfs序 访问图上的每个点,每个点只访问一遍。 ~~~~~      先来看看时间戳的定义,若一个点的时间戳为 x x x,那

poj 1144 Network(割点)

http://poj.org/problem?id=1144 题意很简单,已知图中各边的连接情况,求割点的个数。 注意输入格式。。 #include<stdio.h>#include<vector>#include<string.h>#include<algorithm>using namespace std;vector<int> edge[110];int dfn[110]

POJ-1523 SPF 割点

题意:给你幅图,求割点 对每个点去掉后联通分量数; 裸Tarjan #include<stdio.h>#include<string.h>#include<vector>#include<queue>using namespace std;const int maxn = 1025;const int inf = 1<<29;int n,son;vector<int>

无向图的割点(关节点)

无向图的割点,也称关节点。对于无向图中不同的两点u,v,如果必须经过点w,才能构成一条从u到v的路径,那么称该w点就是割点(关节点)。关节点的求解只需要一次关于图的深度优先遍历(完成一次DFS等于生成一棵树,第一个访问的节点是根结点)。在这次DFS中,按照遍历的顺序记录每个点i的a,b表。其中,a表和b表的计算如下: a[i]=predfn ; //predfn是点的深度遍历访问顺序,在深

图算法 割点

OJ链接: P3388 【模板】割点(割顶) 算法流程 初始化:now[cur]=low[cur]=当前索引 循环:对cur结点的所有邻接结点进行遍历   如果未访问:     孩子++     DFS     用子结点的low[to]更新自己     割点判断(分为是否根节点)   如果已访问:并且遍历的后继不是父节点:     用子结点的now[to]更

ZJU1311 Network - 无向图的割点

题目大意: 给出一个无向图,求图中割点的个数。(若去掉顶点i及其邻边,导致剩下的图不连通,则i是割点) 分析: 求割点有很成熟的DFS算法,照书写了一个,整理成模板备用。   /*ZJU1311 Network*/#include <stdio.h> #include <memory.h> #define clr(a) memset(a,0,sizeof(a)) #define MIN

tarjan求强连通分量+缩点+割点以及一些证明

“tarjan陪伴强联通分量 生成树完成后思路才闪光 欧拉跑过的七桥古塘 让你 心驰神往”----《膜你抄》   自从听完这首歌,我就对tarjan开始心驰神往了,不过由于之前水平不足,一直没有时间学习。这两天好不容易学会了,写篇博客,也算记录一下。   一、tarjan求强连通分量 1、什么是强连通分量? 引用来自度娘的一句话: “有向图强连通分量

【100题】第三十九题 二叉树任意两个节点间最大距离和有向图割点

一,题目(网易有道笔试)        (1)求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,                  比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。        (2)求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,有向图不再连通,描述算法。 二,分析