题意:

给出一个无向图,每次询问,问两个点之间是否有一条唯一的不经过重复点的路径。

思路:

如果存在这样的路径,那么路径上的点就都是桥,我们可以找出图中所有的桥,把非桥边删去,把桥连的点塞到并查集中,查询的时候每次只要看两个点是否在同一个并查集即可。

这题比赛的时候没过,赛后也没写,贴一个我们校一队的代码吧。

代码:

#include<iostream>
#include<map>
#include<vector>
#include<string.h>
#include<stdio.h>
using namespace std;
const int maxa = 10005;
vector<int> e[maxa];
map<int, bool> mp[maxa];
bool cut[maxa];
int low[maxa], dfn[maxa], vis[maxa];
void cut__(int cur, int father, int dep, int n){vis[cur] = 1;dfn[cur] = low[cur] = dep;int children = 0;for(int k = 0;k < e[cur].size(); k++){int i = e[cur][k];if(i != father && 1 == vis[i]){if(dfn[i] < low[cur]){low[cur] = dfn[i];}}if(0 == vis[i]){cut__(i , cur, dep+1, n);children ++;if(low[i] < low[cur]) low[cur] = low[i];if((father == -1 && children > 1) || father != -1 && low[i] >= dfn[cur]) cut[cur] = true;if(low[i] > dfn[cur]){mp[cur][i] = mp[i][cur] = 1;// printf("*------%d %d\n", cur, i);}}}vis[cur] = 2;
}
int fa[maxa];
int find(int ii){return fa[ii] = fa[ii] == ii? ii:find(fa[ii]);
}
int main(){int r, c, q;while(scanf("%d%d%d", &r, &c, &q), r||c||q){for(int i = 0;i <= r; i++){e[i].clear();mp[i].clear();}for(int i = 1;i <= r; i++){fa[i] = i;}memset(cut, 0, sizeof(cut));memset(vis, 0, sizeof(vis));memset(low, 0, sizeof(low));memset(dfn, 0, sizeof(dfn));for(int i = 0;i < c; i++){int u, v;scanf("%d%d", &u, &v);e[u].push_back(v);e[v].push_back(u);}for(int i = 1; i <= r; i++){if(vis[i] == 0){cut__(i, -1, 0, r);}}for(int i = 1; i <= r; i++){for(int k = 0; k< e[i].size(); k++){if(mp[i][e[i][k]] == 1){fa[find(i)] = find(e[i][k]);//printf("%d %d ------\n", i, e[i][k]);}}}while(q--){int u, v;scanf("%d%d", &u, &v);if(find(u) == find(v)){puts("Y");}else{puts("N");}}puts("-");}
}

uvalive5796(图论、桥、并查集)相关推荐

  1. 图论:并查集求最小环

    图论:并查集求最小环 概念: 图.路.环: 一个有向图由G=(N,A)表示,其中N表示节点集,A表示边集边(i,j)为一有序对,i为出发节点,j为终止节点.在无向图中(i,j)与(j,i)一致. 路是 ...

  2. 图论8 并查集深入解析——边带权并查集和拓展域并查集和最小生成树

    我们先复习一下并查集的基本知识. 并查集的三个操作:查询,初始化,合并:并查集的结构:操作方法以及代码:路径压缩优化(详见<图论7 弗洛伊德&并查集算法详解>). 补充一下,并查集 ...

  3. P1455-搭配购买【图论,并查集,dp,背包】

    正题 题目链接: https://www.luogu.org/problemnew/show/P1455 大意 有n个商品,给出价值和价格.有m组搭配,如果买了其中一个就得买另一个,给出你拥有的钱,求 ...

  4. ssl1312ZP2502-[HAOI2006]旅行【图论,并查集】

    正题 题目链接: https://www.luogu.org/problemnew/show/P2502 大意 有n个旅游景点,m条路,每条路有个限速,要求求一个点到另一个点的最大速度和最小速度的比最 ...

  5. ssl1222-矩形【图论,并查集】

    正题 大意 有n个正方形,求块数. 解题思路 用并查集求块数 代码 #include<cstdio> #include<algorithm> using namespace s ...

  6. POJ2524——宗教(Ubiquitous Religions)【图论,并查集】

    正题 题目链接: http://poj.org/problem?id=2524 大意 有n个学生,告诉你哪两个学生的宗教相等,求校园里有多少个宗教. 解题思路 并查集链接就好了 代码 #include ...

  7. POJ1611-嫌犯【图论,并查集】

    正题 题目链接: http://poj.org/problem?id=1611 大意 有n个人,m个组,有一个流感嫌犯,流感嫌犯会将所在的组的所有人变成流感嫌犯,求流感嫌犯的数量. 解题思路 并查集将 ...

  8. java并查集判断是否是连通图_判断 连通图 (图论_并查集)

    给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的. 输入:每组数据的第一行是两个整数n 和m(0< n <=1000).n 表示图的顶点 数目,m 表示图中边的数目.如果n ...

  9. P2814-家谱【图论,并查集,std map库】

    正题 题目链接: https://www.luogu.org/problemnew/show/P2814 大意 有n个父子关系(可能不止一个孩子),询问一些人最大的祖先 代码 #include< ...

  10. P1892-团伙【图论,并查集】

    正题 题目链接: https://www.luogu.org/problemnew/show/P1892 大意 两个人如果认识就只有两种关系,敌人或朋友 而: 朋友的朋友是朋友 敌人的敌人是朋友 (敌 ...

最新文章

  1. 怎么用计算机计算出选手最后得分,计算选手最后得分(限制分的值,且最后按n或N键结束,其他键继续)...
  2. 【Android 进程保活】Android 进程优先级 ( 前台进程 | 可见进程 | 服务进程 | 后台进程 | 空进程 )
  3. python金融量化风险_【手把手教你】Python量化策略风险指标
  4. reactjs组件优化:setState的反复render问题
  5. mysql之调优概论
  6. 【运动快乐】享受赤脚慢跑 收获健康快乐
  7. mysql write rows_解析MYSQL BINLOG 二进制格式(5)--WRITE_ROW_EVENT
  8. 经纬度绘图_Python气象绘图教程(二十二)—mpl_toolkits.axes_grid1
  9. mysql5.7.21压缩版_mysql5.7.21解压版安装配置图文
  10. u 20ubuntu 安装 postfix_汽车天线安装指南
  11. webpack在内存生成html,Vue学习之Webpack基本使用小结(十三)
  12. Unity运行时导出FBX模型的解决方案
  13. Spark小文件合并
  14. 视频压缩软件APP有哪些?让我来告诉你答案
  15. macOS、Linux CentOS 、Docker安装部署canal-server(canal-deployer)服务
  16. 06-08 无人机怎么拍摄VR全境图?
  17. 爬虫B站任意视频 弹幕文字+时间
  18. 开通阿里云的对象存储服务OSS
  19. 机器语言到Java语言的技术背景
  20. commit分拆多个 git_Git拆分commit提交

热门文章

  1. 解决Sublime Text打开C++文件出现中文乱码
  2. wdpc V3 phpmyadmin打不开的一种解决方式(实测有效)
  3. Go进阶(7): JSON 序列化和反序列化
  4. 深度网络模型裁剪和发布正规化
  5. 3DSlicer22:Module-ExtensionWizard Build Install
  6. [OS复习]虚拟存储管理技术2
  7. 程序猿要什么爱情,陪你未来的是键盘和代码啊!
  8. 详解基于 Cortex-M3 的任务调度(下)
  9. 「 每日一练,快乐水题 」917. 仅仅反转字母
  10. Android P 图形显示系统