题目传送门

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

然而我们考虑正解。

对于一对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. ios 性能优化概述

    在开发IOS程序的时候,不止是简简单单的把代码堆砌起来,或者说有一个比较好的架构,程序就ok的.还需要在程序性能上进行优化.所谓优化,并非只是简单的优化几个算法,让程序看起来跑的更快.优化是有目标的, ...

  2. css文字闪烁效果

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. POJ2187 Beauty Contest(旋转卡壳)

    嘟嘟嘟 旋转卡壳模板题. 首先求出凸包. 然后\(O(n ^ 2)\)的算法很好想,但那就不叫旋转卡壳了. 考虑优化:直观的想是在枚举点的时候,对于第二层循环用二分或者三分优化,但实际上两点距离是不满 ...

  4. hdu 1874 Dijkstra算法

    先贴个网上找的比较通俗易懂的教程: 2.1Dijkstra算法(非负权,使用于有向图和无向图) Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心 ...

  5. sublime text 3 搭建python ide

    SublimeCodeIntel 代码提示插件 安装步骤: 1.打开Package Control[Preferences>>Package Control] 2.输入 install 选 ...

  6. scrapy---setting的字段含义

    # -*- coding: utf-8 -*- # Scrapy settings for lizi project # # For simplicity, this file contains on ...

  7. 理解numpy exp函数

    exp,高等数学里以自然常数e为底的指数函数 Exp:返回e的n次方,e是一个常数为2.71828 Exp 函数 返回 e(自然对数的底)的幂次方.   a = 1 print np.exp(a) a ...

  8. iOS 类似微博或朋友圈的信息流

    1.先上图:   image.png   image.png 因为做过了好几次这样的需求,所以这次想到把它拿出来,下次再需要做的时候直接拿过来改改就能用了,节约时间. 2.功能 文字收起和展开,行高自 ...

  9. 用Vue的父子组件通信实现todolist的功能

    先上代码 <body> <div id="root"> <div> <input v-model="inputValue&quo ...

  10. 个人对js闭包的心得见解

    谈起闭包很多人都会挠头.我以前也是,因此我查阅了很多资料,综合分析和理解,自认现在已经识得了闭包的真面目.下面我就从闭包的产生条件,闭包的作用,闭包的实质,闭包的本质,闭包产生的时机,闭包的应用 等几 ...