CDOJ 1144 Big Brother 二分图匹配
生活随笔
收集整理的這篇文章主要介紹了
CDOJ 1144 Big Brother 二分图匹配
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
二分圖匹配
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <string> #include <fstream> #include <list> #include <stack> #include <queue> #include <deque> #include <algorithm> #include <map> #include <set> #include <vector> using namespace std; #define maxn 202 #define maxm 202 bool graph[maxn][maxm]; bool vis[maxm], flag; int match[maxn]; int N, M; bool find(int x) {int j;for (j = 0; j < M; j++){if (graph[x][j] == true && vis[j] == false){vis[j] = true;if (match[j] == -1 || find(match[j])){match[j] = x;return true;}}}return false; } int main() {//freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);//ios::sync_with_stdio(false);//cin.tie(0); cout.tie(0);//ifstream in;//in.open("input.txt", ios::in);scanf("%d%d", &N, &M);int t, s;for (int i = 0; i < N; ++i){scanf("%d", &t);for (int j = 0; j < t; ++j){scanf("%d", &s);--s;graph[i][s] = true;}}memset(match, -1, sizeof(int)*maxn);int ans = 0;for (int i = 0; i < N; ++i){memset(vis, 0, sizeof(vis));if (find(i))++ans;}printf("%d\n", ans);//while (1);return 0; }總結(jié)
以上是生活随笔為你收集整理的CDOJ 1144 Big Brother 二分图匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React学习分享(四)
- 下一篇: Excel的N函数和VALUE函数的使用