poj1466

来源:互联网 发布:如何淘宝创业开店 编辑:程序博客网 时间:2024/06/18 07:20

#include<iostream>

using namespace std;

//最大独立集=n-二分图的最大匹配

//最大独立集就是这里面的没有romatic的人

int used[501],map[501][501],link[501];

int n;

 

int path(int u)

{

int i;

for(i=0;i<n;i++)

{

if(map[u][i]&&!used[i])

{

used[i]=1;

if(link[i]==-1||path(link[i]))

{

link[i]=u;

return 1;

}

}

}

return 0;

}

 

int solve()

{

int i,count=0;

for(i=0;i<n;i++)

{

memset(used,0,sizeof(used));

if(path(i))

count++;

}

return count;

}

int main()

{

int i,j,k,l,m;

while(scanf("%d",&n)!=EOF)

{

memset(link,-1,sizeof(link));

memset(map,0,sizeof(map));

for(i=0;i<n;i++)

{

scanf("%d: (%d)",&k,&m);

for(j=0;j<m;j++)

{

scanf("%d",&l);

map[i][l]=1;

}

}

int cnt=solve();

printf("%d/n",n-cnt/2);

}

return 0;

}

 

 

 

 

 

 

 

原创粉丝点击