//有向图最小路径覆盖:从某一点出发沿着有向路径,不走回路,能将所有的结点遍历。

#include<iostream>
#include<cstdio>
#include<vector>
#include<set>
using namespace std;
const int MAX_N=;
int match[MAX_N];
bool vis[MAX_N];
set<int> insert;
vector<int> e[MAX_N];
int n,k;
void Init()
{
scanf("%d %d",&n,&k);
memset(match, -, sizeof(match));
insert.clear();
for(int i=; i<MAX_N; i++)
{
e[i].clear();
}
int a, b;
for(int i=; i<k; i++)
{
scanf("%d %d", &a, &b);
insert.insert(a);
e[a].push_back(b);
}
} bool Dfs(int x)
{
for(int i=; i<e[x].size(); i++)
{
int u=e[x][i];
if(!vis[u])
{
vis[u]=;
if(match[u]==-||Dfs(match[u]))
{
match[u]=x;
return true;
}
}
}
return false;
} int Bi_matching()
{
int ans=;
set<int>::iterator it;
for(it=insert.begin(); it!=insert.end(); it++)
{
int i=(*it);
memset(vis, false, sizeof(vis));
if(Dfs(i))
ans++;
}
return ans;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
Init();
printf("%d\n",n-Bi_matching());//最小路径覆盖=结点数-最小点集覆盖
}
return ;
}

最新文章

  1. 逆向工程学习第三天--另外一个ShellCode
  2. rt—移植笔记1
  3. 各大IT公司校园招聘程序猿笔试、面试题集锦
  4. java 深度探险 java 泛型
  5. linux ps命令介绍
  6. jquery点击改变图片src源码并toggle
  7. 【转】iOS可执行文件瘦身方法
  8. Shell中变量的使用
  9. Activity的setContentView的流程
  10. (NO.00001)iOS游戏SpeedBoy Lite成形记(二)
  11. 函数式编程 - 函数缓存Memoization
  12. [Python数据挖掘]第3章、数据探索
  13. 2018.12.21 浪在ACM 集训队第十次测试赛
  14. Windbg程序调试系列1-常用命令说明&amp;示例
  15. week0713.5 newspaper 安装问题
  16. Linux下安装Anaconda
  17. linux之bash shell
  18. bootstrap modal模态框的运用
  19. 泰坦尼克(Titanic)生存因素可视化
  20. 小程序中 function (res)的理解

热门文章

  1. iOS9 3D Touch使用
  2. php在不同平台下路径分隔符不同的解决办法
  3. [luogu3767]膜法
  4. SocketAsyncEventArgs里的AcceptSocket能独立存在吗?
  5. jetty源代码剖析
  6. codeforces Gravity Flip 题解
  7. js实现粘贴板复制
  8. dockerfile nginx配置
  9. Android Dev Tips
  10. python 学习2:生成器,迭代器,装饰器