题目传送门

暴力直接对于每个点跑一遍二分图匹配,能拿四十分。

然而我们考虑正解。

对于一对Couple我们建♂->♀的一条边,对于一对曾经有恋情的情侣我们建♀->♂的一条边。

跑Tarjan缩点。

判断每一对Couple,如果在同一个强连通分量里,他们就不稳定(即能通过曾经有恋情的关系跑回来)。

code:

/**************************************************************
Problem: 2140
User: yekehe
Language: C++
Result: Accepted
Time:936 ms
Memory:2232 kb
****************************************************************/ #include <cstdio>
#include <map>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; string S1,S2;
map<string,int>MP;
int N,M;
struct list{
int head[],nxt[],To[];
int cnt;
void clear(){
memset(head,-,sizeof head);
memset(nxt,-,sizeof nxt);
cnt=;
} void add(int x,int y)
{
To[cnt]=y;
nxt[cnt]=head[x];
head[x]=cnt;
cnt++;
}
}W; int DFN[],LOW[],stack[],top,nt,vis[],cot;
int clo[];
void tarjan(int x)
{
DFN[x]=LOW[x]=++nt;
stack[++top]=x;
vis[x]=;
for(int i=W.head[x];i!=-;i=W.nxt[i]){
if(!DFN[W.To[i]]){
tarjan(W.To[i]);
LOW[x]=min(LOW[x],LOW[W.To[i]]);
}
else if(vis[W.To[i]])LOW[x]=min(LOW[x],DFN[W.To[i]]);
}
if(DFN[x]==LOW[x]){
cot++;
while(stack[top]!=x)clo[stack[top]]=cot,vis[stack[top--]]=;
clo[stack[top]]=cot,vis[stack[top--]]=;
}
} int main()
{
//freopen("x.txt","r",stdin);
scanf("%d\n",&N);
W.clear();
register int i,j;
int now=;
for(i=;i<=N;i++){
cin>>S1>>S2;
if(!MP[S1])MP[S1]=++now;
if(!MP[S2])MP[S2]=MP[S1]+N;
W.add(MP[S1],MP[S2]);
}
scanf("%d\n",&M);
for(i=;i<=M;i++){
cin>>S1>>S2;
W.add(MP[S2],MP[S1]);
}
for(i=;i<=N*;i++){
if(!DFN[i])tarjan(i);
}
for(i=;i<=N;i++){
if(clo[i]==clo[i+N])puts("Unsafe");
else puts("Safe");
}
return ;
}

BZOJ2140_稳定婚姻_KEY的更多相关文章

  1. 【HDU1914 The Stable Marriage Problem】稳定婚姻问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...

  2. UVA 1175 Ladies' Choice 稳定婚姻问题

    题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...

  3. BZOJ2140: 稳定婚姻

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

  4. 【POJ 3487】 The Stable Marriage Problem (稳定婚姻问题)

    The Stable Marriage Problem   Description The stable marriage problem consists of matching members o ...

  5. 【UVAlive 3989】 Ladies' Choice (稳定婚姻问题)

    Ladies' Choice Teenagers from the local high school have asked you to help them with the organizatio ...

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

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

  7. poj 3487 稳定婚姻

    /** 稳定婚姻:男生不停的求婚,女生不停地拒绝 **/ #include <iostream> #include <queue> #include <cstdio> ...

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

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

  9. 【BZOJ3816】【清华集训2014】矩阵变换 稳定婚姻问题

    题目描述 给出一个\(n\)行\(m\)列的矩阵\(A\), 保证满足以下性质: 1.\(m>n\). 2.矩阵中每个数都是\([0,n]\)中的自然数. 3.每行中,\([1,n]\)中每个自 ...

随机推荐

  1. Debian9+PHP7+MySQL+Apache2配置Thinkphp运行环境LAMP

    因工作需要,配置了一台服务器,运行THINKPHP框架程序,记录配置过程如下: 安装net版Debian9,完成后,如下: 1.配置基本的网络 php install net-tools 安装net- ...

  2. BZOJ 1270 雷涛的小猫 dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1270 题目大意: 雷涛的小猫雷涛同学非常的有爱心,在他的宿舍里,养着一只因为受伤被救助 ...

  3. 【模板】Dijkstra总结

    Dijkstra算法使用于跑最短路的算法. 算法思想 假定图是不带负权的有向图或无向图,采用贪心策略,每次扩展一个距离为最短的点,在以这个点为中间点,更新其他的所有点的距离.当所有边权都为正时,由于不 ...

  4. 【Webpack】学习随笔

    参考链接:http://www.runoob.com/w3cnote/webpack-tutorial.html Webpack 是一个前端资源加载/打包工具. Webpack 可以将多种静态资源 j ...

  5. python学习day25 正则表达式

    4.30-25 正则表达式与re模块 re模块本身是用来操作正则表达式,与正则本身没有关系 正则表达式是指一规则,匹配字符串的规则 1.正则表达式regex 正则表达式regex是指一规则,匹配字符串 ...

  6. SpringBoot+MyBatis中自动根据@Table注解和@Column注解生成增删改查逻辑

    习惯使用jpa操作对象的方式,现在用mybatis有点不习惯. 其实是懒得写SQL,增删改查那么简单的事情你帮我做了呗,mybatis:NO. 没办法,自己搞喽! 这里主要是实现了通过代码自动生成my ...

  7. idea 注册码(2019)

    MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIEltIiwiYXNzaWduZWVOYW1lIjoiI ...

  8. 查看apache当前并发访问数和进程数

    1.查看apache当前并发访问数: netstat -an | grep ESTABLISHED | wc -l 对比httpd.conf中MaxClients的数字差距多少. 2.查看有多少个进程 ...

  9. 解决Js跨域访问的问题

    1,最近有个需求,用Js获取Html标签<input type="file"/>的路径!遇到代码拒绝访问,提示安全验证,不允许跨域访问,简单的设置一下浏览器即可,不过对 ...

  10. Notes 20180312 : String第四讲_String上的操作

    作为一个基本的工具类,同时又是使用频率很高的类,Java为其提供了丰富的方法支持.Java中的String类中包含了50多个方法.最令人惊讶的是绝大多数方法都很有用,下面我们根据功能来分类介绍一下: ...