//这是一个非常简单的匹配。其实满感觉这种算法讲道理是可以想到。

//但是我们这种弱就只能先学了匈牙利算法,然后随便嗨这种题目了。没事结果都一样。

//这就是匹配算法的DFS形式,有一个BFS形式的,说是适用于稀疏二分图,但是时间复杂度还是(n*m)。。。

//也不是很懂DFS和BFS版有什么差,但是真的有差别,那就上HK算法了,时间复杂度(sqrt(n)*m);

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <algorithm>
  6. #include <queue>
  7. #include <math.h>
  8. #include <queue>
  9. #include <stack>
  10. using namespace std;
  11. #define INF 0x3f3f3f
  12. #define pi acos(-1.0)
  13. #define LL long long
  14. #define N 550
  15. int ma[N][N];
  16. int cx[N],cy[N];
  17. int vis[N];
  18. int k,m,n;
  19. int fuck(int u)
  20. {
  21. for(int i=1; i<=m; i++)
  22. {
  23. if(!vis[i]&&ma[u][i])
  24. {
  25. vis[i]=1;
  26. if(cy[i]==-1||fuck(cy[i]))
  27. {
  28. cy[i]=u;
  29. return 1;
  30. }
  31. }
  32. }
  33. return 0;
  34. }
  35. int main()
  36. {
  37. while(~scanf("%d",&k)&&k)
  38. {
  39. int a,b;
  40. scanf("%d%d",&n,&m);
  41. memset(ma,0,sizeof(ma));
  42. for(int i=0; i<k; i++)
  43. {
  44. scanf("%d%d",&a,&b);
  45. ma[a][b]=1;
  46. }
  47. memset(cy,-1,sizeof(cy));
  48. int ans=0;
  49. for(int i=1; i<=n; i++)
  50. {
  51. memset(vis,0,sizeof(vis));
  52. if(fuck(i))
  53. {
  54. ans++;
  55. }
  56. }
  57. printf("%d\n",ans);
  58. }
  59. return 0;
  60. }

poj1469

题意:p门课,n个人,问你能不能刚好匹配;

  1. #include<cstdio>
  2. #include<string.h>
  3. #include<iostream>
  4. using namespace std;
  5. typedef long long LL;
  6. #define N 300
  7. int nx,ny;
  8. int bmap[N][N];
  9. bool bmask[N];
  10. int cx[N];
  11. int cy[N];
  12. int p,n;
  13. int findpath(int u)
  14. {
  15. int i;
  16. for(int i=1;i<=n;i++)
  17. {
  18. if(bmap[u][i]&&!bmask[i])
  19. {
  20. bmask[i]=1;
  21. if(cy[i]==-1||findpath(cy[i]))
  22. {
  23. cy[i]=u;
  24. cx[u]=i;
  25. return 1;
  26. }
  27. }
  28. }
  29. return 0;
  30. }
  31. int Maxmatch()
  32. {
  33. int res=0;
  34. int i,j;
  35. memset(cx,-1,sizeof(cx));
  36. memset(cy,-1,sizeof(cy));
  37. for(i=1;i<=p;i++)
  38. {
  39. if(cx[i]==-1)
  40. {
  41. memset(bmask,0,sizeof(bmask));
  42. res+=findpath(i);
  43. }
  44. }
  45. return res;
  46. }
  47. int main()
  48. {
  49. int T;
  50. scanf("%d",&T);
  51. while(T--)
  52. {
  53. scanf("%d%d",&p,&n);
  54. int m;
  55. memset(bmap,0,sizeof(bmap));
  56. for(int i=1;i<=p;i++)
  57. {
  58. int num,k;
  59. scanf("%d",&num);
  60. for(int j=1;j<=num;j++)
  61. {
  62. scanf("%d",&k);
  63. bmap[i][k]=1;
  64. }
  65. }
  66. int ans=Maxmatch();
  67. if(ans==p)
  68. printf("YES\n");
  69. else
  70. printf("NO\n");
  71. }
  72. return 0;
  73. }

HDU 2063 过山车+poj 1469的更多相关文章

  1. hdu 2063 过山车(匈牙利算法模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory ...

  2. hdu 2063 过山车 二分匹配(匈牙利算法)

    简单题hdu2063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Ot ...

  3. hdu 2063 过山车(模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  4. HDU 2063 过山车 第一道最大二分匹配

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 题目大意: m个女生和n个男生一起做过山车,每一排必须一男一女,而每个女孩愿意和一些男生坐一起,, 你要找 ...

  5. HDU 2063 过山车 (匈牙利算法)

    题目链接:HDU 2063 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩 ...

  6. HDU 2063 过山车(二分图 && 匈牙利 && 最小点覆盖)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 这是一道很经典的匈牙利问题: 把男同学看成左边点,女同学看成右边点,如果两个同学愿意同 ...

  7. [ACM] HDU 2063 过山车 (二分图,匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. hdu 2063 过山车【匈牙利算法】(经典)

    <题目链接> RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partne ...

  9. HDU 2063 过山车(匈牙利算法)

    过山车 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissio ...

随机推荐

  1. C# Backgroundworker(后台线程)的使用

    namespace BackgroundWorkderPauseSample { public partial class MainForm : Form { BackgroundWorker wor ...

  2. 一个简单的QQ隐藏图生成算法 通过jQuery和C#分别实现对.NET Core Web Api的访问以及文件上传

    一个简单的QQ隐藏图生成算法   隐藏图不是什么新鲜的东西,具体表现在大部分社交软件中,预览图看到的是一张图,而点开后看到的又是另一张图.虽然很早就看到过这类图片,但是一直没有仔细研究过它的原理,今天 ...

  3. ssh命令、ping命令、traceroute 命令所使用的协议

    在Node reboot or eviction: How to check if yourprivate interconnect CRS can transmit network heartbea ...

  4. C++中的getopt的用法

    getopt的用法 getopt被用来解析命令行选项参数.就不用自己写东东处理argv了. 点击(此处)折叠或打开 #include <unistd.h> extern char *opt ...

  5. Java 复杂excel报表导出

    MyExcel,是一个可直接使用Html文件,或者使用内置的Freemarker.Groovy.Beetl等模板引擎Excel构建器生成的Html文件,以Html文件中的Table作为Excel模板来 ...

  6. Intellij IDEA debug jar包

    打成jar包 mvn clean install -Dmaven.test.skip=true jar包保存在target目录下 启动jar Terminal控制台执行下面的命令,启动jar java ...

  7. 事件序列化器 Flume 的无数据丢失保证,Channel 和事务

    小结: 1.Flume 的持久性保证依赖于使用的持久性Channel 的保证 通过事件序列化器将Flume事件转化为外部存储格式 主要的事件序列化器: 1.文本 2.带有头信息的文本 3.Avro序列 ...

  8. Designing a RESTful API with Python and Flask 201

    rest服务器的搭建 - CSDN博客 http://blog.csdn.net/zhanghaotian2011/article/details/8760794 REST的架构设计 REST(Rep ...

  9. CodeForces 24D Broken robot(期望+高斯消元)

    CodeForces 24D Broken robot 大致题意:你有一个n行m列的矩形板,有一个机器人在开始在第i行第j列,它每一步会随机从可以选择的方案里任选一个(向下走一格,向左走一格,向右走一 ...

  10. VC实现趋势图绘制

    本文参考pudn上一个完整工程,在pudn搜索“50815867CurveDrawing”即可找到源代码.   上图是使用VS2010重写了该软件后的效果图,下面再贴出关键代码: // Plot.cp ...