RT,这是一道强联通分量。
而我一个热爱匈牙利的OIer
默默敲下了...

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;int n,m,cnt,vis[100005],match[100005],head[100005],now[100005];map<string,int> boy,girl;struct edge{int u,v,next;bool dis;
}e[100005];inline void add(int u,int v){e[++cnt].v=v;e[cnt].u=u;e[cnt].next=head[u];head[u]=cnt;
}inline bool dfs(int u){for(int i=head[u];i!=-1;i=e[i].next){if(e[i].dis)continue;int v=e[i].v;if(!vis[v]){vis[v]=1;if(match[v]==-1||dfs(match[v])){match[v]=u;return 1;}}}return 0;
}int main(){memset(match,-1,sizeof(match));memset(head,-1,sizeof(head));scanf("%d",&n);for(int i=1;i<=n;i++){string s,t;cin>>s>>t;boy[s]=i;girl[t]=i;add(boy[s],girl[t]);now[i]=cnt;}scanf("%d",&m);for(int i=1;i<=m;i++){string s,t;cin>>s>>t;add(boy[s],girl[t]);}for(int i=1;i<=n;i++){memset(match,-1,sizeof(match));int tot=0;e[now[i]].dis=1;for(int j=1;j<=n;j++){memset(vis,0,sizeof(vis));tot+=dfs(j);}if(tot==n){printf("Unsafe\n");}else{printf("Safe\n");}e[now[i]].dis=0;}
}

TLE事故现场

然后各种常数优化
NM的register,hash,读入优化
P用么得
然后去翻了洛谷题解
大概基本上都是强联通分量的
但有一篇是二分图
然后重拾了信心QwQ
但是那位巨佬的二分图建图是把汉字和妹子统一编号的,我不习惯那样
所以抄不了题解,只好自己刚
心态崩盘后仔细研读了那位巨佬的题解
发现根!本!不!是!一般的二分图写法
因为一开始是匹配好的
用我的码风来描述就是:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;int n,m,cnt,vis[100005],match[100005],head[100005],dis;map<string,int> boy,girl;struct edge{int u,v,next;
}e[100005];inline void add(int u,int v){e[++cnt].v=v;e[cnt].u=u;e[cnt].next=head[u];head[u]=cnt;
}inline bool dfs(int u){for(int i=head[u];i!=-1;i=e[i].next){int v=e[i].v;if(u==dis&&v==dis)continue;if(!vis[v]){vis[v]=1;if(match[v]==-1||dfs(match[v])){return 1;}}}return 0;
}int main(){memset(match,-1,sizeof(match));memset(head,-1,sizeof(head));scanf("%d",&n);for(int i=1;i<=n;i++){string s,t;cin>>s>>t;boy[s]=i;girl[t]=i;match[i]=i;}scanf("%d",&m);for(int i=1;i<=m;i++){string s,t;cin>>s>>t;add(boy[s],girl[t]);}for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));match[i]=-1;dis=i;if(dfs(i)){printf("Unsafe\n");}else{printf("Safe\n");}match[i]=i;}
}

AC现场

转载于:https://www.cnblogs.com/Y15BeTa/p/11298438.html

Luogu P1407 [国家集训队]稳定婚姻 (二分图写法)相关推荐

  1. P1407 [国家集训队]稳定婚姻

    [国家集训队]稳定婚姻 - 洛谷https://www.luogu.com.cn/problem/P1407典型的二分图匹配问题,但这道题要先把正式夫妻先配对起来,先女后男,所以把男的都匹配上他们的老 ...

  2. [洛谷P1407][国家集训队]稳定婚姻

    题目大意:有$n$对夫妻和$m$对情人,如果一对情人中的两人都离婚了,那么他们可以结为夫妻.对于每一对夫妻,若他们离婚后所有人依然可以结婚,那么就是不安全的,否则是安全的.问每一对夫妻是否安全. 题解 ...

  3. luogu P2634 [国家集训队]聪聪可可 点分治

    luogu P2634 [国家集训队]聪聪可可 点分治 没啥难度,只需将路径取模,开桶,统计 d[0],d[1],d[2] 的值即可. ans = d[1]*d[2]*d[2]+d[0]*d[0] C ...

  4. Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

    P2619 [国家集训队2]Tree I 题意 题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有\(need\)条白色边的生成树. 题目保证有解. 输入输出格式 输入格式 ...

  5. P1407-[国家集训队]稳定婚姻【tarjan,强连通分量】

    正题 题目链接:https://www.luogu.org/problemnew/show/P1407 题目大意 若干对夫妻,和若干对绿色关系,求每对夫妻离婚后,绿色关系是否可以重新让每个人两两配对. ...

  6. P2172 [国家集训队]部落战争 二分图最小不相交路径覆盖

    二分图最小不相交路径覆盖 #include<bits/stdc++.h> using namespace std; const int MAXN = 5550; const int MAX ...

  7. luogu P4643 [国家集训队]阿狸和桃子的游戏

    https://www.luogu.com.cn/problem/P4643 打比赛签到题是这题的加强版,完全不会,人傻了 记w(u)w(u)w(u)表示和u点相连的边权之和加上自身的点权 可以发现答 ...

  8. luogu P2634 [国家集训队]聪聪可可

    背景: hehe...hehe...hehe... 题目传送门: https://www.luogu.org/problemnew/show/P2634 题意: 在树上选两个点权值和是333的倍数的概 ...

  9. Luogu P2619 [国家集训队2]Tree I 凸优化,wqs二分

    新学的科技.设\(f(x)\)为选\(x\)条白色边的时候的最小生成树权值和,那么可以猜到它应该是一个下凸函数的形式. 如图,图中\(x\)坐标表示选的白色边条数,\(y\)坐标表示获得的权值,那么我 ...

最新文章

  1. MySQL 解压版创建用户密码
  2. ASP Win7旗舰版中的IIS配置asp.net的运行环境
  3. Flexbox Guide
  4. python里面的之前打过的记忆信息-忘了Python关键语句?这份备忘录拯救你的记忆...
  5. SQL Server 查看表定义的 2 种方法
  6. 实现网站验证码切换功能
  7. a href='?out=login'是什么意思
  8. 【u204】高级砝码称重
  9. 淘宝万亿级海量交易订单存储在哪?
  10. python curl 获取返回值_python获取系统命令的返回值 | curl in python
  11. 4、Kafka常见问题
  12. 使用XPathExpression类对XML文件进行排序
  13. 撸羊毛的一些心得体会
  14. c语言课后第七章习题,c语言课后习题第7章函数
  15. sap事务代码_SAP财务常用的MM模块事务代码清单
  16. 2020年数维杯数学建模C题 垃圾转运优化模型设计求解全过程文档及程序
  17. 按键短按、长按,双击
  18. kaggle 泰坦尼克号数据分析 笔记
  19. 【CAN】PCAN连线
  20. element-ui Input 标签后加搜索图标

热门文章

  1. PostgreSQL 10.1 手册_部分 III. 服务器管理_第 26 章 高可用、负载均衡和复制_26.4. 日志传送的替代方法...
  2. python学习turtle(龟图标状态)
  3. 【UI插件】简单的日历插件(下)—— 学习MVC思想
  4. 无需埋点的移动数据分析平台GrowingIO V1.0
  5. 数据结构系列(四)栈与队列
  6. Java历程-初学篇 Day02变量,数据类型和运算符
  7. Postgres_XL 简要安装配置说明
  8. 同前端联调过程中遇到的坑
  9. MySQL5.6优化了Order by排序limit
  10. 计算机房档案管理,机房档案资料管理制度