稳定婚姻(tarjan)

传送门

这道题一开始可能以为是二分图匹配……?不过后来发现和二分图没啥大关系。

简单分析之后发现,把夫妻之间连边(男性向女性连边),之后再将每对曾经是情侣的人连边(女性向男性连边),当然以上的方向可以反过来不过两次连接方向必须相反。这样的话如果婚姻是危险的那么这些就是在一个强连通分量里面的。换句话说,如果一个强连通分量中有多于1个点,那么就说明这个婚姻并不稳定(夫妻之间连单向边,所以如果婚姻稳定的话夫妻不会出现在一个强连通分量之中)

这样的话就比较好办了,直接如上述方法见图之后跑tarjan求出强连通分量,记录下来每个强连通分量之中的点数即可。还有这道题需要使用map映射一下。

看一下代码。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n')using namespace std;
typedef long long ll;
const int M = 50005;int read()
{int ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') op = -1;ch = getchar();}while(ch >= '0' && ch <= '9'){ans *= 10;ans += ch - '0';ch = getchar();}return ans * op;
}struct edge
{int next,to;
}e[M<<2];
int n,m,cnt,ecnt,cur,low[M],dfn[M],stack[M],top,curr,vis[M],belong[M],head[M];
bool in[M];
string f[M],a,b;
map <string,int> p;void add(int x,int y)
{e[++ecnt].to = y;e[ecnt].next = head[x];head[x] = ecnt;
}void tarjan(int x)
{low[x] = dfn[x] = ++cur;in[x] = 1,stack[++top] = x;for(int i = head[x];i;i = e[i].next){if(!dfn[e[i].to]) tarjan(e[i].to),low[x] = min(low[x],low[e[i].to]);else if(in[e[i].to]) low[x] = min(low[x],dfn[e[i].to]);}if(dfn[x] == low[x]){int p;curr++;while(p = stack[top--]){in[p] = 0,belong[p] = curr;if(x == p) break;}}
}
void solve()
{rep(i,1,cnt) if(!dfn[i]) tarjan(i);rep(i,1,cnt) vis[belong[i]]++;for(int i = 1;i <= n<<1;i += 2){if(vis[belong[p[f[i]]]] > 1) printf("Unsafe\n");else printf("Safe\n");}
}int main()
{n = read();rep(i,1,n){cin >> a >> b;f[++cnt] = a,p[a] = cnt;f[++cnt] = b,p[b] = cnt;add(cnt-1,cnt);}m = read();rep(i,1,m) cin >> a >> b,add(p[b],p[a]);solve();return 0;
}

 

转载于:https://www.cnblogs.com/captain1/p/9671229.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Webpack 常用命令总结以及常用打包压缩方法

前言&#xff1a;Webpack是一款基于node的前端打包工具&#xff0c;它可以将很多静态文件打包起来&#xff0c;自动处理依赖关系后&#xff0c;生成一个.js文件&#xff0c;然后让html来引用&#xff0c;不仅可以做到按需加载&#xff0c;而且可以减少HTTP请求&#xff0c;节约…

在Spring MVC Web应用程序中添加社交登录:单元测试

Spring Social 1.0具有spring-social-test模块&#xff0c;该模块为测试Connect实现和API绑定提供支持。 该模块已从Spring Social 1.1.0中删除&#xff0c;并由 Spring MVC Test框架替换。 问题在于&#xff0c;实际上没有有关为使用Spring Social 1.1.0的应用程序编写单元测…

CSS3 Filter详解(改变模糊度 亮度 透明度等方法)

文章目录 1.模糊2.灰度3.亮度4.对比度5.饱和度6.色相旋转7.反色8.阴影9.透明度10.褐色CSS3 Filter&#xff08;滤镜&#xff09;属性提供了提供模糊和改变元素颜色的功能。CSS3 Fitler 常用于调整图像的渲染、背景或边框显示效果。 -webkit-filter是css3的一个属性&#xff0c;…

laravel中使用offsetSet

首先不用offsetSet方法&#xff0c;使用laravel的硬添加属性如下&#xff1a; 下边使用offsetSet 转载于:https://www.cnblogs.com/qaing123/p/9672241.html

python做自动化控制postman_使用postman+newman+python做接口自动化测试

postman是一款API调试工具&#xff0c;可用于测试接口&#xff0c;相类似的工具还有jmeter、soupUI。通过postmannewmanpython可以批量运行调试接口&#xff0c;达到自动化测试的效果。1、PostMan安装共有两种方式&#xff0c;一种是chrome浏览器上的插件&#xff0c;一种是pos…

转3d视图快捷键_最全Solidworks快捷键,值得收藏!

SOLIDWORKS软件提供了很多实用的快捷键&#xff0c;如果我们熟练掌握这些快捷键无疑可以减轻工作强度和提高工作效率。当然我们也可以点击【工具】-【自定义】-【键盘】&#xff0c;自己定义一些快捷键。本文为大家整理一些常用的快捷键&#xff0c;多使用快捷键可以帮助我们节…

构建前端自动化工作流环境

目标&#xff1a;建一个自动化工作流环境 自动编译 自动合并 自动刷新 自动部署 工作流&#xff1a; 1 全局安装webpack 执行命令&#xff1a; npm install webpack webpack-cli -g 其中webpack-cil 是命令接口工具 2 初始化当前项目&#xff1a;npm init 然后一路回车…

大型布线:Java云应用程序缺少的技术

您是否曾经想过&#xff0c;为什么大多数Java框架中的依赖项注入仅用于本地进程内服务而不是分布式服务&#xff1f; 我最近在2013年EMC世界大会上遇到了Paul Maritz的主题演讲 &#xff08;跳至第32分钟&#xff09;&#xff0c;这使我在云平台的背景下思考了这个问题。 主题…

【单镜头反光相机】CCD、CMOS

CCD、CMOS&#xff1a;图像传感器、电荷耦合器 CCD简介CMOS简介&#xff1a;①被动式 &#xff0c;被动式像素结构&#xff08;Passive Pixel Sensor.简称PPS&#xff09;&#xff0c;又叫无源式。 ②主动式&#xff0c;主动式像素结构&#xff08;Active Pixel Sensor.简称APS…

CSS-定位

CSS定位&#xff1a;相对定位 position: relative 参照物&#xff1a;相对元素原来的位置进行偏移。绝对定位 position:absolute 参照物&#xff1a;往上级元素逐层查找&#xff0c;直到找有position属性的元素&#xff0c;以有position属性的元素为参照物来偏移&#xff0c…

java面向对象中的抽象,类与对象

一、抽象 什么是抽象&#xff1f;将鸽子和麻雀看做是鸟&#xff0c;这是抽象&#xff1b;将整个空调的行为用遥控代替&#xff0c;遥控就可以看做是空调的抽象&#xff1b;将外貌&#xff0c;种族&#xff0c;语言等等形形色色不同的个体看做是人这样一个概念&#xff0c;这也是…

剑灵系统推荐加点_剑灵重制修炼系统 无定式加点打造自我风格

这将是《剑灵(和“标准答案”说再见我们经常可以在论坛中看到类似“求刺客副本修炼”这样的帖子&#xff0c;也有很多热心玩家分享他们的点法。而在这些“标准答案”中&#xff0c;我们又可以经常看到类似“A、B、C必点&#xff0c;剩下的3点修炼随意”这样的论调。但其实这些并…

使用Guava对并发应用程序进行基于对象的微锁定

编写并发Java应用程序时最令人讨厌的问题之一是对线程之间共享的资源的处理&#xff0c;例如Web应用程序的会话和应用程序数据。 结果&#xff0c;如果应用程序的并发级别很低&#xff0c;许多开发人员选择根本不同步这些资源。 例如&#xff0c;不太可能同时访问会话资源&…

java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高

背景我负责的其中一个项目在空负载的情况下&#xff0c;CPU占用率依然保持着100%左右&#xff0c;线上、测试、开发的服务都一样&#xff1b;是什么导致的呢&#xff1f;在开发环境我查看了请求流量&#xff0c;这个流量可以忽略但CPU占用率一直在60%-100%之间浮动。分析问题流…

理财app说明

cordova库和魔蝎库使用的比较多 另外一个使用比较多的就是腾讯的youtu的第三方库&#xff0c;友盟的app统计的功能也有用 推送上使用的有激光推送、魅族推送、小米推送 另外多任务处理方面&#xff0c;有使用blots的库转载于:https://www.cnblogs.com/istar/p/9673249.html

巧用css的border属性完成对图片编辑功能的性能优化

一、需求场景&#xff1a; 最近闲来无事&#xff0c;boss提出了一个要求&#xff0c;研究相关代码并完成一个关于编辑图片功能的性能优化&#xff0c;该功能的主要界面展示如下&#xff1a; 通过了几分钟的短暂试用&#xff0c;发现就是一个简单的裁剪并保存用户选择并上传的图…

『Balancing Act 树的重心』

树的重心 我们先来认识一下树的重心。 树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后&#xff0c;生成的多棵树尽可能平衡。 根据树的重心的定义&#xff0c;我们可以通过树形DP来求解树的重心。 设\(Max_i\)代…

求数的绝对值一定是正数_人教版初中数学七年级上册绝对值公开课优质课课件教案视频...

绝对值&#xff08;习题课&#xff09;导学案&#xff08;教师版&#xff09;【教学目标】1、能利用绝对值的性质求值。 2、通过复习绝对值&#xff0c;让学生对绝对值的理解更加深透。 3、通过复习&#xff0c;让学生掌握利用绝对值的代数和几何意义&#xff0c;并学会灵活运用…

使用Java EE安全性和JBoss AS 7.x保护JSF应用程序的安全

企业应用程序的常见要求是在登录页面后面保护所有JSF页面。 有时&#xff0c;您甚至希望在应用程序内部具有保护区&#xff0c;只有拥有特定角色的用户才能访问这些保护区。 Java EE标准附带实现受某些安全性约束保护的Web应用程序所需的所有方法。 在此博客文章中&#xff0c;…

java 十六进制转十进制_JAVA知识-分析JAVA中的重点和难点

Java中有很多内容在开发项目的过程中并不常用&#xff0c;但是却是很重要的部分&#xff0c;为了避免忘记&#xff0c;今天重新温习了一遍Java中的重点和难点&#xff0c;借此机会记录一下方便以后查找。本文主要分为以下几个部分&#xff1a;1.进制的相互转换2.Java中位运算符…