【bzoj2140】: 稳定婚姻

哎。。都是模板题。。

一眼看过去 哇 二分图哎

然后发现好像并不能匈牙利算法

自己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的更多相关文章

  1. BZOJ2140: 稳定婚姻(tarjan解决稳定婚姻问题)

    2140: 稳定婚姻 Time Limit: 2 Sec  Memory Limit: 259 MBSubmit: 1321  Solved: 652[Submit][Status][Discuss] ...

  2. BZOJ2140: 稳定婚姻

    题解: 题意就是求二分图的必须边. 我们有结论: 在残量网络上跑tarjan,对于一条边(u,v) 如果该边满流||scc[u]==scc[v],那么该边是可行边. 因为如果scc[u]==scc[v ...

  3. 稳定婚姻(tarjan)

    传送门 这道题一开始可能以为是二分图匹配……?不过后来发现和二分图没啥大关系. 简单分析之后发现,把夫妻之间连边(男性向女性连边),之后再将每对曾经是情侣的人连边(女性向男性连边),当然以上的方向可以 ...

  4. BZOJ2140 稳定婚姻[强连通分量]

    发现如果$B_i$和$G_j$配对,那么$B_j$又要找一个$G_k$配对,$B_k$又要找一个$G_l$配对,一直到某一个$B_x$和$G_i$配对上为止,才是不稳定的. 暴力是二分图匹配.匈牙利算 ...

  5. 【BZOJ2140】稳定婚姻 Tarjan

    [BZOJ2140]稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. ...

  6. 图论补档——KM算法+稳定婚姻问题

    突然发现考前复习图论的时候直接把 KM 和 稳定婚姻 给跳了--emmm 结果现在刷训练指南就疯狂补档.QAQ. KM算法--二分图最大带权匹配 提出问题 (不严谨定义,理解即可) 二分图 定义:将点 ...

  7. luogu P1407 稳定婚姻-tarjan

    题目背景 原<工资>重题请做2397 题目描述 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有 ...

  8. 【稳定婚姻问题】【HDU1435】【Stable Match】

    2015/7/1 19:48 题意:给一个带权二分图  求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...

  9. 稳定婚姻问题和Gale-Shapley算法(转)

    什么是算法?每当有人问作者这样的问题时,他总会引用这个例子:假如你是一个媒人,有若干个单身男子登门求助,还有同样多的单身女子也前来征婚.如果你已经知道这些女孩儿在每个男孩儿心目中的排名,以及男孩儿们在 ...

随机推荐

  1. 分布式爬虫搭建系列 之三---scrapy框架初用

    第一,scrapy框架的安装 通过命令提示符进行安装(如果没有安装的话) pip install Scrapy 如果需要卸载的话使用命令为: pip uninstall Scrapy 第二,scrap ...

  2. Anaconda使用总结(文章来自网络)

    序 Python易用,但用好却不易,其中比较头疼的就是包管理和Python不同版本的问题,特别是当你使用Windows的时候.为了解决这些问题,有不少发行版的Python,比如WinPython.An ...

  3. javascript第四节

    闭包: 块级作用域: 私有变量:

  4. 02-26C#三级省市区ajax联动控件,利用UpdatePanel,以及页面取值

    第一步:设置界面 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="PCAC ...

  5. [转]C#开发微信公众平台-就这么简单

    本文转自:http://www.it165.net/pro/html/201403/11102.html 写在前面 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文.菜单 ...

  6. IOS ipa安装不上 e8000087

    iPhone5是32位的,所以按照64位编译出来的32位不支持,下面3种方案的,选择第3中就可以了. 5S是64位. e8000087: Your iOS device does not suppor ...

  7. wordpress Bloginfo()函数

    bloinfo($show); ‘name‘ – 显示在 设置 > 常规 中设置的“站点标题”. 该数据是从 wp_options 这个数据表中检索到的 "blogname" ...

  8. Educational Codeforces Round 45 (Rated for Div. 2)

    A bracket sequence is a string containing only characters "(" and ")". A regular ...

  9. Project2--Lucene的Ranking算法修改:BM25算法

    原文出自:http://blog.csdn.net/wbia2010lkl/article/details/6046661 1.       BM25算法 BM25是二元独立模型的扩展,其得分函数有很 ...

  10. Jquery异步

    一.Jquery向aspx页面请求数据$("#Button1").bind("click", function () { $.ajax({ type: &quo ...