/*
分析:
水。
最小路径覆盖。
DAG图的最小路径覆盖数=节点数(n)- 最大匹配数(m)
2012-07-13
*/
分析:
水。
最小路径覆盖。
DAG图的最小路径覆盖数=节点数(n)- 最大匹配数(m)
2012-07-13
*/
#include"stdio.h"
#include"string.h"
struct A
{
int total;
int e[122];
}s[122];
int match[122];
int DFS(int k)
{
int i;
for(i=0;i<s[k].total;i++)
{
if(match[s[k].e[i]]==k) continue;
if(match[s[k].e[i]]==0 || DFS(match[s[k].e[i]])) {match[s[k].e[i]]=k; return 1;}
}
return 0;
}
int main()
{
int T;
int n,k;
int a,b;
int ans;
int i;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&k);
memset(match,0,sizeof(match));
for(i=1;i<=n;i++) {s[i].total=0;}
while(k--)
{
scanf("%d%d",&a,&b);
s[a].e[s[a].total++]=b;
}
ans=0;
for(i=1;i<=n;i++)
{
if(s[i].total==0) continue;
ans+=DFS(i);
}
ans=n-ans;
printf("%d\n",ans);
}
return 0;
}