POJ1422 Air Raid(二分图最大匹配)
时间:2010-10-13 来源:Arthur Peng
代码#include <iostream>
#include <string.h>
#define MAX 121
using namespace std;
bool map[MAX][MAX];
int xM[MAX],yM[MAX];
bool cheak[MAX];
int n;
bool DFS(int u)
{
int v = 0;
for(v = 0;v <= n;v++)
{
if(!cheak[v] && map[u][v])
{
cheak[v] = true;
if(yM[v] == -1 || DFS(yM[v]))
{
yM[v] = u;
xM[u] = v;
return true;
}
}
}
return false;
}
int search()
{
int cot = 0;
memset(xM,-1,sizeof(xM));
memset(yM,-1,sizeof(yM));
for(int i = 1;i <= n;i++)
{
if(xM[i] == -1)
{
memset(cheak,false,sizeof(cheak));
if(DFS(i))
{
cot++;
}
}
}
return cot;
}
int main()
{
int testnum;
int streat;
cin>>testnum;
for(int i = 0;i < testnum;i++)
{
cin>>n>>streat;
memset(map,false,sizeof(map));
for(int j = 0;j < streat;j++)
{
int sK,eK;
cin>>sK>>eK;
map[sK][eK] = true;
}
cout<<n - search()<<endl;
}
return 0;
}
相关阅读 更多 +