实际上是一道tarjan缩点的题,tarjan求点双联通分量,主要思路就是缩完点之后,找新图中的叶子节点的个数,然后带入公式就行了。详情见lba的博客。

题干:

。。。略。

代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
#define duke(i,a,n) for(int i = a;i <= n;i++)
#define lv(i,a,n) for(int i = a;i >= n;i--)
#define clean(a) memset(a,0,sizeof(a))
const int INF = 1 << 30;
typedef long long ll;
typedef double db;
template <class T>
void read(T &x)
{char c;bool op = 0;while(c = getchar(), c < '0' || c > '9')if(c == '-') op = 1;x = c - '0';while(c = getchar(), c >= '0' && c <= '9')x = x * 10 + c - '0';if(op) x = -x;
}
template <class T>
void write(T x)
{if(x < 0) putchar('-'), x = -x;if(x >= 10) write(x / 10);putchar('0' + x % 10);
}
struct node
{int l,r,nxt;
}a[300010];
int lst[200010],len = 1,cnt = 0;
void add(int x,int y)
{a[++len].l = x;a[len].r = y;a[len].nxt = lst[x];lst[x] = len;
}
int n,m,low[200010],dfn[200010];
int from[200010],col[200010];
int du[200010];
int vis[200010];
int top = 0,st[100010],tot = 0;
void tarjan(int u,int g)
{bool flag = 0;vis[u] = 1;st[++top] = u;low[u] = dfn[u] = ++cnt;for(int k = lst[u];k;k = a[k].nxt){int y = a[k].r;if(y == g && !flag){flag = 1;continue;}if(!dfn[y]){tarjan(y,u);low[u] = min(low[u],low[y]);}else if(vis[y])low[u] = min(low[u],dfn[y]);}if(low[u] == dfn[u]){int p = 0;tot++;do{p = st[top--];col[p] = tot;vis[p] = 0;}while(p != u);}
}
int main()
{read(n);read(m);duke(i,1,m){int x,y;read(x);read(y);add(x,y);add(y,x);}duke(i,1,n)if(!dfn[i])tarjan(i,0);int ans = 0;duke(i,1,n){for(int k = lst[i];k;k = a[k].nxt){int x = a[k].l;int y = a[k].r;if(col[x] != col[y]){du[col[x]]++;du[col[y]]++;}}}
//    for(int i = 1; i <= tot; ++i) printf("%d ", du[i]); puts("")duke(i,1,tot)if(du[i] == 2)ans++;if(tot == 1)printf("0\n");elseprintf("%d\n",(ans + 1) / 2);return 0;
}

转载于:https://www.cnblogs.com/DukeLv/p/9761317.html

P2860 [USACO06JAN]冗余路径Redundant Paths相关推荐

  1. 无向图强联通分量-洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths

    https://www.luogu.org/problem/show?pid=2860 这个就是无向图的强联通: 有向图的两点再一个分量里,是x可以到y,y也可到x: 但无向图本来就是双向的,所以我们 ...

  2. POJ3177 Redundant Paths

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

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

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

  4. Quartz-2D绘图之路径(Paths)详解

    在上篇文章中,我们简单的理解了绘图上下文,今天我们来认识一下Quartz-2D中另一个重要的概念,路径(Paths). 一.理解路径 路径定义了一个或多个形状,或是子路径.一个子路径可由直线,曲线,或 ...

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

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

  6. 数字IC设计学习笔记_静态时序分析STA_伪路径False Paths

    数字IC设计学习笔记 半周期路径Half Cycle Path 1. 伪路径False Paths 2. 如何处理False Paths 1. 伪路径False Paths 在设计中,有些路径是不可能 ...

  7. Redundant Paths 分离的路径(边双连通分量)

    题干: 为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条 ...

  8. [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)

    题目传送门 题目描述 为了从F个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了被迫走某一条路,所以她们想建一些新路,使每一对草场之间都会至少有两条相互分 ...

  9. bzoj 1718: [Usaco2006 Jan] Redundant Paths 分离的路径

    题意 给你一个无向图 问你最少添加多少条边可以使得他变成边双图 题解 直接双连通缩点 得到一颗树 然后答案是叶子节点/2向上取整 取法是每一次找两个LCA深度最小的叶子,两个连边就可以了 然后不知道为 ...

最新文章

  1. java jdk1.8环境变量的配置
  2. 应届生,你凭什么认为你当得了产品经理?| PMCAFF
  3. OpenCASCADE:Modeling Algorithms模块几何工具之来自约束的曲线和曲面
  4. 图的遍历(Java)构造器
  5. SpringMVC学习笔记整理
  6. 几种可以不用过于投入精力去交往的人脉
  7. GridView表头排序方法设置
  8. 将16进制unsigned char数组转换成整数
  9. IP地址与数字地址相互转换
  10. 端口与进程-----Window cmd命令
  11. 修正win10部署JDK8(使用JDK文件夹中的自带JRE)
  12. 微信服务号获取地理位置
  13. Halcon仿射变换图片(旋转、缩放、平移)
  14. 制作字幕.html教程,如何制作电影字幕,视频字幕制作软件|免费给视频加字幕
  15. Android背景斜线
  16. c++字符串与c字符串
  17. 【openGL】安装篇(上):Windows
  18. 2019年软件QA与测试八大关键词
  19. Android中PopupWindow遮罩层的设置
  20. 九年级计算机教学课时计划,信息技术教学计划(精选3篇)

热门文章

  1. ftp 501错误_分享,HTTP协议错误代码大全
  2. java透明度_纯度与参考透明度
  3. 输入一行字符,用Java分别统计出其中英文字母、空格、数字和其他字符的个数。
  4. Java打印出所有的水仙花数
  5. AI学习笔记(十一)CNN之图像识别(下)
  6. gis属性表怎么导成excel_将Excel数据导入到ArcGIS属性表
  7. 大规模中文自然语言处理语料(百科,问答、新闻,翻译)
  8. Deep Learning with PyTorch 必看教程集(4本)
  9. python机器学习:朴素贝叶斯分类算法
  10. python字符串驼峰转换_将字符串转换为驼峰格式