链接:

http://poj.org/problem?id=3177

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82833#problem/E

要去重边, 求再加上几条边任意两点直接都能到达

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;#define N 100005struct Edage
{int v, next;
} e[N<<2];int n, Index, bnt, cnt, top;
int low[N], dfn[N], Head[N], Stack[N], belong[N], ru[N];
bool use[5005][5005];void Init()
{Index = bnt = top = 0;memset(low, 0, sizeof(low));memset(dfn, 0, sizeof(dfn));memset(Head, -1, sizeof(Head));memset(use, 0, sizeof(use));memset(belong, 0, sizeof(belong));memset(ru, 0, sizeof(ru));
}
void Add(int u, int v)
{e[bnt].v = v;e[bnt].next = Head[u];Head[u] = bnt++;
}
void Tarjan(int u, int fa)
{int v;low[u] = dfn[u] = ++Index;Stack[++top] = u;for(int j=Head[u]; j!=-1; j=e[j].next){v = e[j].v;if(!dfn[v]){Tarjan(v, u);low[u] = min(low[u], low[v]);}else if(v!=fa)low[u] = min(low[u], dfn[v]);}if(low[u]==dfn[u]){cnt++;do{v = Stack[top--];belong[v] = cnt;}while(u!=v);}
}int main()
{int  m;while(scanf("%d%d", &n, &m)!=EOF){int i, j, u, v;Init();for(i=0; i<m; i++){scanf("%d%d", &u, &v);if(use[u][v]==false){Add(u, v);Add(v, u);use[u][v] = use[v][u] = true;}}Tarjan(1, 1);for(i=1; i<=n; i++)for(j=Head[i]; j!=-1; j=e[j].next){if(belong[i]!=belong[e[j].v])ru[belong[i]]++;}int ans=0;for(i=1; i<=cnt; i++){if(ru[i]==1)ans++;}printf("%d\n", (ans+1)>>1);}return 0;
}

又看了一遍连通图, 把之前的题都看了一遍,虽然现在该学匹配了,我却还在这下功夫,但这是有点作用的,下次再复习一下估计理解就更好了

转载于:https://www.cnblogs.com/YY56/p/4717661.html

(连通图 ) Redundant Paths --POJ --3177相关推荐

  1. Redundant Paths POJ - 3177(tarjan+边双连通分量)

    题意: 有n个牧场,要求从一个牧场到另一个牧场,要求至少要有2条独立的路可以走.现已有m条路,求至少要新建多少条路,使得任何两个牧场之间至少有两条独立的路.两条独立的路是指:没有公共边的路,但可以经过 ...

  2. POJ 3177 Redundant Paths POJ 3352 Road Construction(双连接)

    POJ 3177 Redundant Paths POJ 3352 Road Construction 题目链接 题意:两题一样的.一份代码能交.给定一个连通无向图,问加几条边能使得图变成一个双连通图 ...

  3. POJ3177 Redundant Paths

    POJ3177 Redundant Paths 文章目录 Description 题意: 题解: 代码: Time Limit: 1000MS Memory Limit: 65536K Total S ...

  4. [POJ3177]Redundant Paths(双联通)

    在看了春晚小彩旗的E技能(旋转)后就一直在lol--额抽点时间撸一题吧-- Redundant Paths Time Limit: 1000MS   Memory Limit: 65536K Tota ...

  5. 【POJ - 3177】Redundant Paths(边双连通分量,去重边)

    题干: In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1.. ...

  6. POJ 3352 Road Construction ; POJ 3177 Redundant Paths (双联通)

    这两题好像是一样的,就是3177要去掉重边. 但是为什么要去重边呢??????我认为如果有重边的话,应该也要考虑在内才是. 这两题我用了求割边,在去掉割边,用DFS缩点. 有大神说用Tarjan,不过 ...

  7. poj 3177 Redundant Paths(tarjan边双连通)

    题目链接:http://poj.org/problem?id=3177 题意:求最少加几条边使得没对点都有至少两条路互通. 题解:边双连通顾名思义,可以先求一下连通块显然连通块里的点都是双连通的,然后 ...

  8. POJ 3177 Redundant Paths(边双联通分量)

    题目描述: In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1 ...

  9. POJ - 3177 Redundant Paths 双联通补边

    题目链接 题意:给出一个多条边问需要加几条变才能变成双连通图. 首先要缩点,缩点之后就是变成了一个没有强连通分量的图,这时候只需要统计入度为1的点有多少个,然后通过观察发现将点两两连接即可,answe ...

最新文章

  1. Teaching Machines to Converse--阅读笔记1 摘要及介绍
  2. 使用英伟达NeMo让你的文字会说话,零基础即可实现自然语音生成任务 | 附代码...
  3. 设计模式系列之十二:单例模式
  4. 第二章 Java基本语法(一)
  5. softmax实现多分类算法推导及代码实现
  6. Flask详解(下篇)
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
  8. Unity播放服务器端视频 发布到Android移动端
  9. 利用FFT成功实现拓扑识别(五)--关于频谱泄露
  10. 设计师都在用这5个免费素材网站
  11. UGUI实现图片特效轮播,使用插件DOTWEEN
  12. oracle 11g64 位 安装文件
  13. 多层板的板层布局和线宽的设置(记录)
  14. 2066服务器芯片组,华硕发布三款LGA2066对应工作站主机板
  15. 用Python实现序列帧播放器
  16. 立创开源 BGA162-809H
  17. thonny和python有什么关系_学习用 Thonny 写代码: 一个面向初学者的Python IDE
  18. ubuntu ps功能安装
  19. 玩转Mysql系列 - 第8篇:详解排序和分页(order by limit),及存在的坑
  20. Win Server 2016安装Oracle_11gR2数据库

热门文章

  1. axure html显示效果,Axure RP基础篇: 实现循环显示效果的两种方法
  2. 爆点客源4.1.0活动营销应用56版 修复朋友圈不显示问题
  3. 织梦dedecms模板--物流快递网站模板源码-带手机版数据同步
  4. 如何防止WordPress博客内容被恶意复制的教程
  5. Easytrader踩坑之旅(二)
  6. MySQL入门 (七) : 储存引擎与资料型态
  7. jQuery模拟原生态App上拉刷新下拉加载效果代码
  8. Python_pandas 两种主要的数据类型(Series、DataFrame)
  9. KVM 虚拟机在物理主机之间迁移的实现 -- 静态迁移/动态迁移/存储迁移
  10. 数据建模-聚类分析-K-Means算法