【BZOJ】2140 稳定婚姻
【解析】Hash,离散化。Tarjan
[分析]
对于每一个名字。首先离散化成编号。
用hash或者其它,反正不要最主要的即可了。否则O(N^2L)会爆掉。
然后请參考:http://www.cnblogs.com/Randolph87/p/3757817.html
[吐槽]
难得吐槽一下,做这道题居然做了一个上午,開始暴力求标号,然后一直TLE。
中间map的数据范围少开了N,也试过几次WA。
这不是水题吗。为什么会是一个艰难的Accept...
[小结]
求二分图完备匹配的必要边,①存不存在增广环?
O(N^2) ②直接试着删去依照hungery找完备匹配 O(N^3)。
[代码]
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; typedef unsigned long long ULL;
const int N=8002;
const int M=20001;
const int L=12;
const int T=37;
const int LMT=100009; int n,m;
struct G
{
int v,nxt;
}map[M+N];
int tt,hd[N];
int dfn[N],pre[N],ct;
int edge[N][2];
int v[N],color[N],stk[N],cc;
char t[L];
struct T
{
char s[L];
int nxt;
}hash[N];
int num,hh[LMT]; inline void ins(int u,int v)
{
map[++tt].v=v;
map[tt].nxt=hd[u];
hd[u]=tt;
} void tarjan(int now)
{
dfn[now]=pre[now]=++ct;
stk[++stk[0]]=now,v[now]=1;
for (int k=hd[now];k;k=map[k].nxt)
{
if (v[map[k].v]==2) continue;
if (v[map[k].v]==1)
{
if (pre[map[k].v]<dfn[now]) dfn[now]=pre[map[k].v];
continue;
}
tarjan(map[k].v);
if (dfn[map[k].v]<dfn[now]) dfn[now]=dfn[map[k].v];
}
if (pre[now]==dfn[now])
{
cc++;
for (;stk[stk[0]]!=now;stk[0]--)
color[stk[stk[0]]]=cc,v[stk[stk[0]]]=2;
color[stk[stk[0]]]=cc; v[stk[stk[0]--]]=2;
}
} inline ULL h(void)
{
ULL sum=0; int lt=strlen(t);
for (int i=0;i<lt;i++) sum=sum*T+t[i]-'0';
return sum;
} int pos(void)
{
int key=h()%LMT;
for (int k=hh[key];k;k=hash[k].nxt)
if (!strcmp(hash[k].s,t)) return k;
memmove(hash[++num].s,t,sizeof t);
hash[num].nxt=hh[key];
return hh[key]=num;
} int main(void)
{
int t1,t2;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%s",t); t1=pos();
scanf("%s",t); t2=pos();
edge[i][0]=t1,edge[i][1]=t2;
ins(t1,t2);
}
scanf("%d",&m);
for (int i=1;i<=m;i++)
{
scanf("%s",t); t1=pos();
scanf("%s",t); t2=pos();
ins(t2,t1);
} for (int i=1;i<=n;i++)
if (!v[edge[i][0]]) tarjan(edge[i][0]); for (int i=1;i<=n;i++)
printf("%s\n",color[edge[i][0]]==color[edge[i][1]]?"Unsafe":"Safe"); return 0;
}
【BZOJ】2140 稳定婚姻的更多相关文章
- BZOJ 2140 稳定婚姻
2140: 稳定婚姻 Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的 ...
- bzoj 2140: 稳定婚姻 (二分图)
//========================== 蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/ 转载要声明! //=============== ...
- BZOJ 2140 稳定婚姻 ——二分图
论二分图的可行边与必须边. 考虑用dinic增广之后的图,一些是必要的割边,一些是可行的割边. 我们首先求出一组可行的最大匹配,那么这些变都是可行的. 然后我们求一遍强连通分量. 如果 scc[u]! ...
- 2140: 稳定婚姻 - BZOJ
Description 我国的离婚率连续7年上升,今年的头两季,平均每天有近5000对夫妇离婚,大城市的离婚率上升最快,有研究婚姻问题的专家认为,是与简化离婚手续有关. 25岁的姗姗和男友谈恋爱半年就 ...
- BZOJ2140: 稳定婚姻
题解: 题意就是求二分图的必须边. 我们有结论: 在残量网络上跑tarjan,对于一条边(u,v) 如果该边满流||scc[u]==scc[v],那么该边是可行边. 因为如果scc[u]==scc[v ...
- BZOJ2140: 稳定婚姻(tarjan解决稳定婚姻问题)
2140: 稳定婚姻 Time Limit: 2 Sec Memory Limit: 259 MBSubmit: 1321 Solved: 652[Submit][Status][Discuss] ...
- [BZOJ3816][清华集训2014]矩阵变换(稳定婚姻问题)
3816: 矩阵变换 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 803 Solved: 578[Submit][Status][Discuss] ...
- 【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 问题 ...
随机推荐
- BZOJ 1511 KMP
题意:求出每个前缀的最长周期之和(等于本身的算0) 思路: 求出来next数组 建出next树 找到不为0的最小的 n减去它就是答案 //By SiriusRen #include <cstd ...
- A - Supermarket
Problem description We often go to supermarkets to buy some fruits or vegetables, and on the tag the ...
- Redis 链表结构 和 常用命令
Redis 数据结构 --链表(linked-list) 命令 说明 备注 lpush key node1 [node2 ...] 把节点 node1 加入到 链表最左边 如果是 node1.node ...
- Serializable资料整理
1. 序列化 简单的说就是为了保存 内存中各种对象的状态(是实例变量,不是方法),并且可以把保存的对象读取出来. 虽然保存 object states的方法很多,但是Java提供了一种保存对象状态的机 ...
- iphone(苹果)手机浏览器顶部下拉出现网页源
在苹果手机下拉页面,会出现类似上图那样,具体方法如下: function handler(){//禁止默认滑动函数 event.preventDefault();}document.addEventL ...
- 编译带加密功能的sqlite
以为编译wxsqlite是很难的事情,竟然这么顺利. 1.下载wxsqlite代码,解压(wxcode.sourceforge.net/components/wxsqlite3/) 2.下载Prema ...
- java就业前景发展方向分析
随着信息化的发展,IT培训受倒了越来越多人的追捧.在开发领域,JAVA培训成为了许多人的首选!java拥有强大的开发者的数量已超过了之前的900万,将近97%的企业电脑也在运行着java,其下载量每年 ...
- 两款工作流JBPM和CCBPM的对比
以国外流行的工作流jbpm4的模式与当今中国开源的ccbpm(ccflow和jflow的总称)流程引擎对照.以便让各位能够了解到中国国情的工作流引擎与国际流行的设计规则的差别.不同.与优缺点. 国外工 ...
- c# 读取 XML
XmlDocument xmldoc = new XmlDocument(); string xmlPath = HttpContext.Server.MapPath("~/*****.xm ...
- (转)PJAX的实现与应用
一.前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦到另一个页面的web神奇魔术.后来随着JavaScr ...