[Luogu] 稳定婚姻
https://www.luogu.org/problemnew/show/1407
tarjan求一下强连通分量,然后判断一下两个人是否在同一强连通分量中
#include<iostream>
#include<cstring>
#include<cstdio>
#include<map> using namespace std; inline int read() {
int sum();
char ch(getchar());
for(; ch<''||ch>''; ch=getchar());
for(; ch>=''&&ch<=''; sum=sum*+(ch^),ch=getchar());
return sum;
} struct edge {
int e;
edge *n;
edge():e(),n(NULL) {}
} a[],*pre[]; int tot; inline void insert(int s,int e) {
a[++tot].e=e;
a[tot].n=pre[s];
pre[s]=&a[tot];
} int n,m;
char s1[],s2[];
map<string,int>ma;
int cnt,top,qlt;
int dfn[],low[],sta[],bl[];
bool vis[]; inline void tarjan(int u) {
dfn[u]=low[u]=++cnt;
sta[++top]=u;
vis[u]=;
for(edge *i=pre[u]; i; i=i->n) {
int e(i->e);
if(!dfn[e]) {
tarjan(e);
low[u]=min(low[u],low[e]);
} else if(vis[e])
low[u]=min(low[u],dfn[e]);
}
if(low[u]==dfn[u]) {
int tmp;
++qlt;
while() {
tmp=sta[top--];
vis[tmp]=;
bl[tmp]=qlt;
if(tmp==u)
break;
}
}
} int main()
{
memset(pre,NULL,sizeof(pre));
n=read();
for(int i=; i<=n; ++i) {
scanf("%s%s",s1,s2);
insert((i<<)-,i<<);
ma[s1]=(i<<)-,ma[s2]=i<<;
}
m=read();
for(int i=; i<=m; ++i) {
scanf("%s%s",s1,s2);
insert(ma[s2],ma[s1]);
}
for(int i=; i<=(n<<); ++i) if(!dfn[i]) tarjan(i);
for(int i=; i<=n; ++i)
if(bl[(i<<)-]==bl[i<<]) puts("Unsafe");
else puts("Safe");
return ;
}
[Luogu] 稳定婚姻的更多相关文章
- luogu P1407 稳定婚姻-tarjan
题目背景 原<工资>重题请做2397 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有 ...
- 【HDU1914 The Stable Marriage Problem】稳定婚姻问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...
- UVA 1175 Ladies' Choice 稳定婚姻问题
题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...
- BZOJ2140: 稳定婚姻
题解: 题意就是求二分图的必须边. 我们有结论: 在残量网络上跑tarjan,对于一条边(u,v) 如果该边满流||scc[u]==scc[v],那么该边是可行边. 因为如果scc[u]==scc[v ...
- 【POJ 3487】 The Stable Marriage Problem (稳定婚姻问题)
The Stable Marriage Problem Description The stable marriage problem consists of matching members o ...
- 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)
Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...
- 【稳定婚姻问题】【HDU1435】【Stable Match】
2015/7/1 19:48 题意:给一个带权二分图 求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...
- poj 3487 稳定婚姻
/** 稳定婚姻:男生不停的求婚,女生不停地拒绝 **/ #include <iostream> #include <queue> #include <cstdio> ...
- 稳定婚姻问题和Gale-Shapley算法(转)
什么是算法?每当有人问作者这样的问题时,他总会引用这个例子:假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚.如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在 ...
随机推荐
- 【转载】【最短路Floyd+KM 最佳匹配】hdu 2448 Mining Station on the Sea
Mining Station on the Sea Problem Description The ocean is a treasure house of resources and the dev ...
- java之理解面向对象
1.程序设计的三种基本结构 顺序结构 顺序结构表示程序中的各操作是按照它们在源代码中的排列顺序依次执行的 选择结构 选择结构表示程序的处理需要根据某个特定的条件选择其中的一个分支执行.选择结构有单选择 ...
- 怎样通过混入(Mixin)实现多继承
js不提供现成的多重继承的方法, 但可以通过Object.assign()来手动实现: function Father1(name){ this.name = name; } function Fat ...
- JDBC 学习复习8 C3P0数据源使用
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. c3p0与dbcp区别 dbcp ...
- Django rest-framework框架-组件之渲染器
渲染器: from rest_framework.renderers import BrowsableAPIRenderer,AdminRenderer,HTMLFormRenderer,JSONRe ...
- CVE-2019-0214: Apache Archiva arbitrary file write and delete on the server
CVE-2019-0214: Apache Archiva arbitrary file write and delete on the server Severity: Medium Vendor: ...
- 软件打包 Inno
官网 http://www.jrsoftware.org/ 新建 点击工具栏第一项"新建".输入产品的名称.版本号.公司网址等信息 添加应用程序文件 应用程序图标 应用程序文档 许 ...
- bootstrap 分页行数选择按钮失效
原因是bootstrap.js重复加载,button点击作用两次,导致没效果
- OpenCV实现图象翻转、滤波、锐化
OpenCV实现图象翻转.滤波.锐化 注:以下代码,使用opencv库函数实现了对图片的翻转.灰度图转换.各种滤波.各种锐化. 库函数相关参数及说明参阅:OpenCV中文站=>opencv教程( ...
- json —— pickle 的序列化和反序列化
前言json的序列化和反序列化 1, json 只能序列化简单的数据类型,如,列表,字典,字符串,等简单的类型,不能序列化复杂的类型. 2, json 是支持所有的语言的,多以我们跨语言的时候都是用j ...