UVA 351 Network 无向图求割点
来源:互联网 发布:易语言写软件 编辑:程序博客网 时间:2024/09/21 06:35
裸的无向图求割点。自己的第一个求割点题目
#include<iostream>#include<algorithm>#include<cstring>#include<queue>#define ll long long#define ld long double#define INF 0x3f3f3f3fusing namespace std;vector<int> G[102];int dfn[102],low[102],f[102],Now;bool cut[102];void mem() {for(int i=0; i<102; i++)G[i].clear();memset(dfn,0,sizeof dfn);memset(low,0,sizeof low);memset(f,0,sizeof f);memset(cut,0,sizeof cut);Now=1;}void Tarjan(int x,int fa) {dfn[x]=low[x]=Now++;f[x]=fa;for(int i=0; i<G[x].size(); i++) {if(!dfn[G[x][i]]) {Tarjan(G[x][i],x);low[x]=min(low[x],low[G[x][i]]);} else {if(G[x][i]!=fa)low[x]=min(low[x],dfn[G[x][i]]);}}}int main() {//std::ios::sync_with_stdio(false);// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);int n;while(cin>>n&&n) {mem();int a;while(cin>>a&&a) {int x;char c;while(scanf("%d%c",&x,&c)) {G[a].push_back(x);G[x].push_back(a);if(c=='\n')break;}}Tarjan(1,1); //求dfn和low,因为是无向图,带着父节点 int fa=0,ans=0;for(int i=2; i<=n; i++) {if(f[i]==1) //求根节点的子树个数 fa++;else if(low[i]>=dfn[f[i]]) //如果没有回溯到父节点以前,说明父节点是割点 cut[f[i]]=1;}for(int i=2; i<=n; i++)if(cut[i])ans++;if(fa>=2)ans++;cout<<ans<<endl;}return 0;}
阅读全文
0 0
- UVA 351 Network 无向图求割点
- UVA 315 Network(无向图求割点)
- uva 315 Network(无向图求割点)
- UVa 315 Network(无向图求割点)
- UVA 318 Network(无向图求割点数)
- UVA 315 Network(Tarjan求无向图割点)
- POJ 1144 Network 无向图求割点
- poj 1144 Network (无向图求割点)
- poj 1144 Network 无向图求割点
- POJ 1144 Network 无向图求割点Tarjan
- poj 1144 Network 无向图求割点
- toj 1026 Network 无向图求割点
- poj 1144 Network 无向连通图求割点
- POJ 1144 Network (无向图求割点)
- UVA315- Network(无向图割点)
- POJ_P1144 Network(无向图割点)
- TOJ.1026 Network【求无向图割点】
- ★【求无向图割顶】Network
- 《剑指offer》Python语言 面试题61:按之字形顺序打印二叉树
- mNOIP 模拟赛 Day 2
- 6-2 有序顺序表的插入(10 分)
- SiftGPU使用GLSL语言, WINDOWS系统编译方法
- MapReduce
- UVA 351 Network 无向图求割点
- 1从控制台输入年份,判断是闰年还是平年;
- 新建类名和保存时的类名不同时编译错误提示
- 习题6.2(2)
- 学生成绩转换
- spring
- PTA 排座位(25 分)
- 「算法精解_C语言描述」 链表_双向链表的实现与分析
- JZOJ 5459. 【NOIP2017提高A组冲刺11.7】密室