国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

hdoj 2444 The Accomodation of Students(裸的二分圖判定+匈牙利)

2019-11-08 03:13:04
字體:
來源:轉載
供稿:網友

題意:

一些學生之間是朋友關系(關系不能傳遞),現在要將一堆學生分成兩堆,使得在同一堆的學生之間沒有朋友關系。如果不可以輸出“No”,可以的話輸出最多可以分出幾對小盆友(最大匹配)。

思路:

裸的二分圖判定和匈牙利算法(匈牙利算法)

代碼:

#include<bits/stdc++.h>using namespace std;const int maxn = 205;vector<int> e[maxn];int match[maxn], vis[maxn], n, m;bool judge(){    queue<int> q;    memset(vis, -1, sizeof(vis));    q.push(1);    vis[1] = 0;    while(q.size())    {        int u = q.front();        q.pop();        for(int i = 0; i < e[u].size(); i++)        {            int to = e[u][i];            if(vis[to] == -1)            {                vis[to] = !vis[u];                q.push(to);            }            else if(vis[to] == vis[u])                return false;        }    }    return true;}bool Find(int x){    for(int i = 0; i < e[x].size(); i++)    {        int to = e[x][i];        if(!vis[to])        {            vis[to] = 1;            if(match[to] == 0 || Find(match[to]))            {                match[to] = x;                return true;            }        }    }    return false;}int main(void){    while(cin >> n >> m)    {        for(int i = 0; i < maxn; i++)            e[i].clear();        memset(match, 0, sizeof(match));        for(int i = 1; i <= m; i++)        {            int x, y;            scanf("%d%d", &x, &y);            e[x].push_back(y);            e[y].push_back(x);        }        if(!judge()) puts("No");        else        {            int ans = 0;            for(int i = 1; i <= n; i++)            {                memset(vis, 0, sizeof(vis));                ans += Find(i);            }            PRintf("%d/n", ans/2);        }    }    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉屏| 奉贤区| 昌都县| 平湖市| 东兰县| 昭苏县| 卢湾区| 咸阳市| 阜城县| 溧水县| 辛集市| 舒城县| 阜新市| 威宁| 石渠县| 开江县| 蒙山县| 连江县| 乡城县| 景东| 沐川县| 交口县| 公安县| 彰化市| 辽宁省| 修武县| 鹿邑县| 沙坪坝区| 通榆县| 福建省| 长兴县| 和平区| 佛学| 沂源县| 五寨县| 涟源市| 武威市| 临江市| 红河县| 朝阳区| 广元市|