国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 麻城市| 莱芜市| 高青县| 绿春县| 务川| 华容县| 石台县| 屏山县| 镇赉县| 夹江县| 马龙县| 日喀则市| 东丰县| 青阳县| 库尔勒市| 延川县| 界首市| 乡城县| 泰宁县| 荣昌县| 侯马市| 宣威市| 富平县| 朝阳县| 逊克县| 临高县| 日喀则市| 奇台县| 文安县| 宁都县| 盐亭县| 乌拉特前旗| 普兰县| 元江| 马关县| 罗定市| 天水市| 平顶山市| 长岭县| 尚义县| 沧源|