| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:求教高人中的高人,用匈牙利算法写出下面程序给小弟参考学习。
只看楼主 加入收藏
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
结帖率:92.59%
收藏
已结贴  问题点数:50 回复次数:5 
求教高人中的高人,用匈牙利算法写出下面程序给小弟参考学习。
今天做个题目,学长说用匈牙利算法(求最大匹配),但是程序模板不知道,求高人,帮写下面程序,
题目:电视台做了关于猫狗喜好投票,喜欢猫的观众不喜欢狗,问,电视台最多能满足都少观众需求。

Sample Input
2/*表示几组测试数据*/
1 1 2/*第一个数表示猫的数量,第二个数表示狗的数量,第三个数表示投票观众的数量*
C1 D1/*这是第一个人投票结果,第一票投喜欢票,第二票投反对票,所以C1表示他喜欢第一只猫,D1表示讨厌第一只狗,以下类推*/
D1 C1
1 2 4
C1 D1
C1 D1
C1 D2
D2 C1
 
Sample Output
1/*表示最多能满足多少观众(投票者),即投票人数减去匈牙利算法最大匹配数/
3
搜索更多相关主题的帖子: 匹配 匈牙利 
2009-08-10 13:09
soky
Rank: 4
等 级:业余侠客
帖 子:126
专家分:228
注 册:2009-7-13
收藏
得分:0 
看不懂,能举个比较易懂的例子么
2009-08-10 19:11
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:0 
看了半天的匈牙利算法球二分图的最大匹配,没看懂。
关注一下吧。
我也想知道怎么算。。。
2009-08-10 19:47
rofor
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:165
注 册:2009-6-12
收藏
得分:50 
#include<stdio.h>
#include<string.h>
 
int map[1000][1000];
int con[1000];
int vis[1000];
int max = 0;
int n, m;
 
int find(int p)
{
    int i;
    for(i=1; i<=n; i++)
    {
        if(map[p][i] && !vis[i])
        {
            vis[i] = 1;
            if(!con[i] || find(con[i]))
            {
                con[i] = p;
                return 1;
            }
        }
    }
    return 0;
}
 
int main(void)
{
    int i;
    int x, y;
     
    memset(map, 0, sizeof(map));
    memset(con, 0, sizeof(con));
     
    scanf("%d %d", &n, &m);
    for(i=1; i<=m; i++)
    {
        scanf("%d %d", &x, &y);
        map[x][y] = 1;
    }
    for(i=1; i<=n; i++)
    {
        memset(vis, 0, sizeof(vis));
        max += find(i);
    }
    printf("%d\n", max);
    for(i=1; i<=n; i++)
    {
        if(con[i])
        {
            printf("%d %d\n", con[i], i);
        }
    }
     
    return 0;
}

I'm rofor.
for(;;;);  :-)
RoFoR [AT] YaHoO [DoT] CN
2009-08-11 14:56
rofor
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:68
专家分:165
注 册:2009-6-12
收藏
得分:0 
我给你的不是原题的代码,是基本的匈牙利代码。

输出的是匹配边。


你的问题的答案就是求的匹配的补集

I'm rofor.
for(;;;);  :-)
RoFoR [AT] YaHoO [DoT] CN
2009-08-11 14:58
huicpc0876
Rank: 2
等 级:论坛游民
帖 子:69
专家分:50
注 册:2009-7-24
收藏
得分:0 
回复 5楼 rofor

恩,谢谢你了,你还能描述一下你的那个问题么?
2009-08-12 10:12
快速回复:求教高人中的高人,用匈牙利算法写出下面程序给小弟参考学习。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016381 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved