【bzoj2140】: 稳定婚姻 图论-tarjan
哎。。都是模板题。。
一眼看过去 哇 二分图哎
然后发现好像并不能匈牙利算法
自己xjb画两张图,发现二分图左向右连配偶的边,然后右向左连交往过的边
然后如果Bi Gi在同一个强连通分量里面就一定可以在Bi Gi离婚以后再增广一次
最开始用map维护一下名字就好了
/* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <stack>
#include <map>
#include <string>
using namespace std; const int N=;
struct edge{
int next,to;
}e[N*];
int n,m,ade,cnt,cq;
int first[N],low[N],dfn[N],vis[N],ins[N],pos[N];
stack <int> S;
map <string,int> mp; void addedge(int x,int y){
e[++ade].to=y;
e[ade].next=first[x];
first[x]=ade;
} #define s e[x].to
void dfs(int p){
dfn[p]=low[p]=++cnt;
ins[p]=vis[p]=;
S.push(p);
for (int x=first[p];x;x=e[x].next){
if (!vis[s]){
dfs(s);
if (ins[s]) low[p]=min(low[p],low[s]);
}else{
if (ins[s]) low[p]=min(low[p],dfn[s]);
}
}
if (low[p]==dfn[p]){
cq++;
while (S.top()!=p){
pos[S.top()]=cq;
ins[S.top()]=;
S.pop();
}
pos[S.top()]=cq;
ins[S.top()]=;
S.pop();
}
} int main(){
scanf("%d",&n);
for (int i=;i<=n;i++){
char a[],b[];
scanf("%s%s",a,b);
mp[a]=i,mp[b]=i+n;
addedge(i,i+n);
}
scanf("%d",&m);
for (int i=;i<=m;i++){
char a[],b[];
scanf("%s%s",a,b);
addedge(mp[b],mp[a]);
}
for (int i=;i<=n*;i++) if (!vis[i]) dfs(i);
for (int i=;i<=n;i++){
if (pos[i]==pos[i+n]) puts("Unsafe"); else puts("Safe");
}
return ;
}
【bzoj2140】: 稳定婚姻 图论-tarjan的更多相关文章
- BZOJ2140: 稳定婚姻(tarjan解决稳定婚姻问题)
2140: 稳定婚姻 Time Limit: 2 Sec Memory Limit: 259 MBSubmit: 1321 Solved: 652[Submit][Status][Discuss] ...
- BZOJ2140: 稳定婚姻
题解: 题意就是求二分图的必须边. 我们有结论: 在残量网络上跑tarjan,对于一条边(u,v) 如果该边满流||scc[u]==scc[v],那么该边是可行边. 因为如果scc[u]==scc[v ...
- 稳定婚姻(tarjan)
传送门 这道题一开始可能以为是二分图匹配……?不过后来发现和二分图没啥大关系. 简单分析之后发现,把夫妻之间连边(男性向女性连边),之后再将每对曾经是情侣的人连边(女性向男性连边),当然以上的方向可以 ...
- BZOJ2140 稳定婚姻[强连通分量]
发现如果$B_i$和$G_j$配对,那么$B_j$又要找一个$G_k$配对,$B_k$又要找一个$G_l$配对,一直到某一个$B_x$和$G_i$配对上为止,才是不稳定的. 暴力是二分图匹配.匈牙利算 ...
- 【BZOJ2140】稳定婚姻 Tarjan
[BZOJ2140]稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. ...
- 图论补档——KM算法+稳定婚姻问题
突然发现考前复习图论的时候直接把 KM 和 稳定婚姻 给跳了--emmm 结果现在刷训练指南就疯狂补档.QAQ. KM算法--二分图最大带权匹配 提出问题 (不严谨定义,理解即可) 二分图 定义:将点 ...
- luogu P1407 稳定婚姻-tarjan
题目背景 原<工资>重题请做2397 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有 ...
- 【稳定婚姻问题】【HDU1435】【Stable Match】
2015/7/1 19:48 题意:给一个带权二分图 求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...
- 稳定婚姻问题和Gale-Shapley算法(转)
什么是算法?每当有人问作者这样的问题时,他总会引用这个例子:假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚.如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在 ...
随机推荐
- MyBatis 工具 pndao - 自动写 SQL
pndao的原理并不复杂,是基于MyBatis的方法命名约定来生成SQL,并且写入MyBatis需要的XML. 写之前会判断是否已经存在XML或者注解,如果已经存在则略过此方法,所以无论是注解还是XM ...
- ASP.NET页面传值加号变空格解决办法
只需要把欲传值进行编码 string EncodeId = Server.UrlEncode(id); 加号就变成了 % 2 B (中间无空格) 然后再传出去. Request.QueryStrin ...
- pandas分组和聚合
Pandas分组与聚合 分组 (groupby) 对数据集进行分组,然后对每组进行统计分析 SQL能够对数据进行过滤,分组聚合 pandas能利用groupby进行更加复杂的分组运算 分组运算过程:s ...
- stm32下载程序,拔了调试器不能运行程序解决方案
A:肯定是只拔了仿真器与电脑连接的那端,然后把另外端依然接在板子上.我说的没错吧 B: 对的,这样就会一直复位吗 这是复位的问题,当JLINK在板子上连接的时候,断电情况下,会一直把RESET拉低,导 ...
- java 高并发解决方案
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研 ...
- springMVC的多文件的异步上传实现
springMVC的MultipartFile与传统的ajax文件上传兼容性不好,采用如下的ajax方法,后台无法获取文件. $.ajax({ url: '/upload', type: 'POST' ...
- MySQL的blob类型
MySQL中的Blob类型 MySQL中存放大对象的时候,使用的是Blob类型.所谓的大对象指的就是图片,比如jpg.png.gif等格式的图片,文档,比如pdf.doc等,以及其他的文件.为了在数据 ...
- 解决"Windows 安装程序不允许从远程桌面连接安装"
msiexec /i c:\路径\安装程序 例如 msiexec /i c:\TortoiseSVN-1.7.2.22327-x64-svn-1.7.2.msi
- 10-python中的requests应用
使用request方便: #_*_ coding: utf-8 _*_ ''' Created on 2018年7月14日 @author: sss ''' import requests impor ...
- Django--登录实例
1.准备工作 创建必要的目录和文件,导入js,css,bootstrap等,目录结构如下: 2.配置文件添加static路径 settings.py 1 2 3 4 STATIC_URL = '/st ...