POJ 3041 匈牙利算法模板题

一开始预习是百度的算法 然后学习了一下

然后找到了学长的ppt 又学习了一下..

发现..居然不一样...

找了模板题试了试..百度的不好用 反正就是wa了..果然还是应当跟着学长混..

图两边的点分别是行数和列数

每有一个点 就让所处行列连一条边

求最小点覆盖

然后卡住...后来看了增林的博客...

最小点覆盖=最大匹配数 果然是模板题..

然后wa..

后来发现是当进行对左边点的遍历的时候 每次都要mem一次vis数组

应该是每次找之前都重新清空啊。。不然下次怎么找啊。。。增光路对点的是否被访问过不是有要求吗 —— 学长原话...

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<math.h>
using namespace std;
int s[505][505];
int vis[505];
int n,m;
int link[505];
bool find(int i)
{
    for(int k=1;k<=n;k++)
    {
        if(s[i][k]==1&&vis[k]==0)
        {
            vis[k]=-1;
            if(link[k]==-1||find(link[k]))
            {
                link[k]=i;
                return true;
            }
        }
    }
    return false;

}
int main(){
while(~scanf("%d%d",&n,&m))
{
    memset(s,0,sizeof(s));
    memset(link,-1,sizeof(link));
    for(int i=1;i<=m;i++)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        s[a][b]=1;
    }
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        memset(vis,0,sizeof(vis));
        if(find(i))
        {
            ans++;
        }
    }
    printf("%d\n",ans);
}
}

  

时间: 2024-12-25 01:12:05

POJ 3041 匈牙利算法模板题的相关文章

匈牙利算法模板题 hdu 1150

Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6339    Accepted Submission(s): 3178 Problem Description As we all know, machine scheduling is a very classical problem in compu

poj 1274 The Perfect Stall【匈牙利算法模板题】

The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 9421 Description Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering pr

hdu 1083 匈牙利算法模板题

题意:有p个课程,n个学生,每个课程有x个学生喜欢.如果每个课程都至少可以分配一个学生就输出YES,否则输出NO. 题解:匈牙利算法裸题. 代码: #include <cstdio>#include <cstring>#define N 400int Map[N][N],S[N],vis[N],n;bool dfs(int u){    for(int i=1;i<=n;i++){        if(Map[u][i]&&!vis[i]){         

hdu 2063 匈牙利算法模板题

题意:有x个男生各自有喜欢的女生,y个女生各自有喜欢的男生.互相喜欢的在一起有好感度.问怎样好感度最高. 题解:匈牙利算法裸题. 代码: #include <cstdio>#include <cstring>#define N 1500int Map[N][N],M[N],vis[N];int k,m,n;bool dfs(int u){    for(int i=1;i<=n;i++){        if(Map[u][i]&&!vis[i]){     

POJ 3041 Asteroids(二分图模板题)

Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N grid (1 <= N <= 500). The grid contains K asteroids (1 <= K <= 10,000), which are conveniently located at the lattice points of the grid. Fortun

【二分图匹配入门专题1】F - COURSES poj1469【最大匹配--匈牙利算法模板题】

Consider a group of N students and P courses. Each student visits zero, one or more than one courses. Your task is to determine whether it is possible to form a committee of exactly P students that satisfies simultaneously the conditions: every stude

Asteroids POJ - 3041 匈牙利算法+最小点覆盖K&#246;nig定理

题意: 给出一个N*N的地图N   地图里面有K个障碍     你每次可以选择一条直线 消除这条直线上的所有障碍  (直线只能和列和行平行) 问最少要消除几次 题解: 如果(x,y)上有一个障碍 则把X加入点集 V1 .Y加入点集V2   并且X Y连一条边  这样构成一个新图 如果选择 V1中的点 X 那么就相当于消去 (X,y)中的所有Y    要找使最小点覆盖 那就是跑一遍 匈牙利就行了 详细证明见二分图最小点覆盖K?nig定理 其中 x y需要连单向边 不然会造成混乱 因为x=1 y=1

二分图匹配(匈牙利算法模板)

二分最大匹配的匈牙利算法模板 /* *************************************************** 二分图匹配(匈牙利算法的DFS实现) INIT:G[][]两边定点划分的情况 CALL:res=Hungary();输出最大匹配数 优点:适于稠密图,DFS找增广路快,实现简洁易于理解 时间复杂度:O(VE); *************************************************** */ const int MAXN = 51

匈牙利算法模板 hdu 1068 题意不清。。。。(数据范围太过随意。。)

Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8104    Accepted Submission(s): 3711 Problem Description the second year of the university somebody started a study on the roman