#include<iostream>
#include<algorithm>
#include<queue>
#include<cstring>
#include<cstdio>
#define maxn 300
#define maxm 15000
using namespace std;
struct Edge
{
int next;
int to;
int w;
}edge[maxm];
int x,y;
int head[maxm];
int cx[maxm];
int cy[maxm];
bool visit[maxm];
int n,m,cnt;
void add(int u,int v)
{
edge[cnt].next=head[u];
edge[cnt].to=v;
head[u]=cnt++;
}
bool dfs(int x)
{
for(int i=head[x];i!=-1;i=edge[i].next)
{
int v=edge[i].to;
if(!visit[v])
{
visit[v]=1;
if(!cy[v]||dfs(cy[v]))
{
cx[x]=v;cy[v]=x;
return 1;
}
}
}
return 0;
}
int hungary()
{
int cot=0;
for(int i=1;i<=n;i++)
{
if(!cx[i])
{
memset(visit,0,sizeof(visit));
cot+=dfs(i);
}
}
return cot;
}
void pri(int u)
{
u=u+n;
do
printf("%d ",u=u-n);
while(visit[u]=1,u=cx[u]);
printf("\n");
}
int main()
{
memset(head,-1,sizeof(head));
cnt=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y+n);
add(y+n,x);
}
int ans=hungary();
memset(visit,0,sizeof(visit));
for(int i=1;i<=n;i++)
{
if(!visit[i])
{
pri(i);
}
}
printf("%d\n",n-ans);
}

  

最新文章

  1. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
  2. fonts.useso.com 访问变慢
  3. hdu1255 矩阵的交 线段树+扫描线
  4. Emmet 的使用
  5. QQ聊天机器人for PHP版 (登录,收、发消息)
  6. 移动前端之 zepto
  7. BigDecimal用法详解(转)
  8. Eclipse无法识别(手机)设备的解决方案
  9. 记2014“蓝桥杯全国软件大赛&amp;quot;决赛北京之行
  10. vim全局替换命令
  11. No grammar constraints (DTD or XML Schema) referenced in the document.
  12. js正則表達式
  13. 在图像上增加文字 C#
  14. [CodeForces - 276A] Lunch Rush
  15. ZZNU 2055(基姆拉尔森计算公式)
  16. Qt 查找功能
  17. 【前端学习笔记】arguments相关
  18. cdoj1341卿学姐与城堡的墙
  19. Linux集群的NTP服务器时间同步
  20. POJ1637:Sightseeing tour(混合图的欧拉回路)

热门文章

  1. leetcode:Single Number
  2. Unity编辑器:基于NGUI的引用检测工具
  3. hibernate 解决 org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
  4. 抛弃配置后的Spring终极教程
  5. IDEA搭建本地服务器解决无法连接https://start.spring.io
  6. .net core实践系列之SSO-同域实现
  7. 在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)
  8. 第十五次oo作业
  9. Win10系统如何安装Linux Mint
  10. Migrate MySQL database using dump and restore