hdu 1151DAG图的最小路径覆盖数

来源:互联网 发布:企业数据集成 编辑:程序博客网 时间:2024/06/05 04:44
#include<stdio.h>#include<string.h>#define N 150int n,map[N][N],link[N],mark[N];int find(int k){int i;for(i=1;i<=n;i++){if(map[k][i]==1&&mark[i]==0){mark[i]=1;if(link[i]==0||find(link[i])==1){link[i]=k;return 1;}}}return 0;}int main(){int t,m,a,b,i,sum;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);memset(map,0,sizeof(map));memset(link,0,sizeof(link));for(i=1;i<=m;i++){scanf("%d%d",&a,&b);map[a][b]=1;}sum=0;for(i=1;i<=n;i++){memset(mark,0,sizeof(mark));sum=sum+find(i);}printf("%d\n",n-sum);}return 0;}DAG图的最小路径覆盖数=节点数(n)- 最大匹配数(m)

0 0
原创粉丝点击