hdu 1054 Strategic Game 【匈牙利算法】

题目链接:?pid=1054 题意:求无向图的最小顶点覆盖 = 最大匹配数 / 2; 代码:

;int n, m, k, num;int p[1510][1510];int book[1510];int match[1510];int t, tt;int a, b;char tmp;bool dfs(int u){int i;for (i = 0; i < n; i++){if (book[i] == 0 && p[u][i] == 1){book[i] = 1;if (match[i] == 0 || dfs(match[i])){match[i] = u;return true;}}}return false;}int main(){while (scanf(“%d”, &n) != EOF){memset(p,0,sizeof(p));memset(match, 0, sizeof(match));for (int i = 0; i < n; i++){scanf(“%d%c%c%d%c”,&m,&tmp,&tmp,&k,&tmp);for (int j = 1; j <= k; j++){scanf(“%d”,&num);p[m][num] = 1;p[num][m] = 1;}}int ans = 0;for (int i = 0; i < n; i++){memset(book, 0, sizeof(book));if (dfs(i))ans++;}cout << ans/2 << endl;}return 0;}

,美文、不要轻易用过去来衡量生活的幸与不幸!

hdu 1054 Strategic Game 【匈牙利算法】

相关文章:

你感兴趣的文章:

标签云: