男女有的有喜欢的关系,有的没有,找出一个最大集合,使集合中任何两个学生都没有关系。
sample in
7
0: (3) 4 5 6
1: (2) 4 6
2: (0)
3: (0)
4: (2) 0 1
5: (1) 0
6: (2) 0 1
sample out
5
此外,输入还可以这样输入啊。。。
scanf("%d: (%d)",&u,&k);
#include<stdio.h>
#include<string.h>
#define MAX 510
int n,vy[MAX],map[MAX][MAX],used[MAX];
bool dfs(int u){
for(int j=0;j<n;j++){
if(map[u][j]&&used[j]==0){
used[j]=1;
if(vy[j]==-1||dfs(vy[j])){
vy[j]=u;
return true;
}
}
}
return false;
}
int findit(){
int sum=0;
memset(vy,-1,sizeof(vy));
for(int i=0;i<n;i++){
memset(used,0,sizeof(used));
if(dfs(i))
sum++;
}
return sum;
}
int main(){
while(scanf("%d",&n)!=EOF){
memset(map,0,sizeof(map));
for(int i=1;i<=n;i++){
int u,k;
scanf("%d: (%d)",&u,&k);
for(int j=1;j<=k;j++){
int v;
scanf("%d",&v);
map[u][v]=1;
}
}
printf("%d\n",n-findit()/2);
}
return 0;
}