2008年第33届ACM/ICPC亚洲区预赛(哈尔滨)网络预选赛 1007__The Accomodation of Students 二分图最大匹配+染色

原创 2008年10月02日 08:51:00

http://acm.hrbeu.edu.cn/index.php?act=problem&proid=5087

之前完全不会的说....太弱小了

想了半天终于知道啥是染色....

不过现在会了,会了总比不会好-,-

题目的意思就是把学生分成2组,每组中的学生都不互相认识,可是2组间的任何学生都认识,很明显是匹配问题,比赛的时候瞬间被无数人秒杀..

具体思路代码写的非常清楚了...

 

 

  1. #include <iostream>
  2. using namespace std;
  3. #define N 201
  4. bool map[N][N],visit[N];
  5. int n,m,match[N],color[N];
  6. bool dfs(int pre)
  7. {
  8.     for(int i=1;i<=m;i++)
  9.     {
  10.         if(map[pre][i]&&!visit[i])
  11.         {
  12.             visit[i]=true;
  13.             int t=match[i];
  14.             match[i]=pre;
  15.             if(t==-1||dfs(t)) return true;
  16.             match[i]=t;
  17.         }
  18.     }
  19.     return false;
  20. }
  21. int find_match()
  22. {
  23.     memset(match,-1,sizeof(match));
  24.     int i,sum=0;
  25.     for(i=1;i<=n;i++){memset(visit,false,sizeof(visit));if(dfs(i)) sum++;}
  26.     return sum;
  27. }
  28. int main()
  29. {
  30.     int x,y,t;
  31.     bool flag;
  32.     while(cin>>n>>t)
  33.         {
  34.             memset(map,false,sizeof(map));
  35.             memset(color,0,sizeof(color));
  36.             m=n;
  37.             flag=false;
  38.             while(t--)
  39.                 {
  40.                     cin>>x>>y;
  41.                     if(color[x]&&color[x]==color[y])flag=true;
  42.                     color[x]=1;
  43.                     color[y]=2;
  44.                     map[x][y]=true;
  45.                 }
  46.             if(flag)
  47.                 cout<<"No"<<endl;
  48.             else
  49.                 cout<<find_match()<<endl;
  50.         }
  51. }

HDU2444 二分图判断(BFS 的染色法) + 求最大匹配边数(DFS 的匈牙利算法)

0)二分图匹配有两种算法,一种是网络流中的最大流,另一种就是下面的匈牙利算法。 ①用染色法判断是否是二分图:     主要是怎么判断一个图是不是二分图。不妨选取某个点作为起点并染为某种颜色、同时把...
  • a272846945
  • a272846945
  • 2016年05月07日 19:55
  • 1398

Tour(二分图最大权匹配)(网络流)

题意:给你一个有向图,边有权值,现在要你求若干个环包含所有的顶点,并且每个顶点只出现一次(除了一个环中的起始点)使得华中所有边得权值之和最小。 像这杨构成圈并且每个点只能属于一个圈的题, 可...
  • u014665013
  • u014665013
  • 2016年05月08日 20:02
  • 924

二分图的基本概念+二分图的最大匹配问题(匈牙利算法)

今天学了二分图的最大匹配,其中的匈牙利算法。。哦不,其实远不止这个,还有后面的一系列KM、开花树啊什么的算法。反正又是一个异常懵逼的一天。。。 我觉得应该是上课前没有稍微预习一下这个算法是什么,了解个...
  • x_y_q_
  • x_y_q_
  • 2016年07月15日 20:05
  • 2435

二分图的最大匹配 C++实现

/* * File name : bipartite_graph.cpp * Function : 二分图的最大匹配 C++实现 * Created on : 2016年6月13日 * Au...
  • beijiwei
  • beijiwei
  • 2016年06月13日 14:44
  • 306

二分图的最大匹配问题完整代码

二分图的最大匹配问题很多博客原理讲的已经很清楚了,贴出来几个链接: 二分图的最大匹配问题解决原理 二分图最大匹配原理 自己花了两天时间敲出来的代码,感觉成长了很多: #include ...
  • bbtl_ast
  • bbtl_ast
  • 2017年06月06日 14:12
  • 630

acm网络选拔赛原则和晋级规则

acm网络选拔赛原则和晋级规则 选拔原则: 1. 教练是参加队伍所代表学校的正式教师,教练必须保证所有队员符合本规则的规定; 2. 每只队伍最多有三名正式参赛队员(本赛点不设置替补); ...
  • threedonkey
  • threedonkey
  • 2013年11月18日 16:02
  • 3864

The Accomodation of Students(二分图的判断+二分图的最大匹配)

There are a group of students. Some of them may know each other, while others don't. For example, A ...
  • islittlehappy
  • islittlehappy
  • 2017年11月28日 19:43
  • 36

二分图最大匹配例题

例题1:HDU 1083&&POJ 1469 Courses Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/327...
  • u012294939
  • u012294939
  • 2015年02月12日 15:32
  • 2506

二分图的最大匹配、完美匹配和匈牙利算法

二分图的最大匹配、完美匹配和匈牙利算法 2013-08-01Algorithms二分图匹配, 图论, 算法 这篇文章讲无权二分图(unweighted bipartite graph)的最...
  • pi9nc
  • pi9nc
  • 2013年09月20日 15:38
  • 63092

二分图最大匹配(模板+题目)

定义和定理: 最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有...
  • guhaiteng
  • guhaiteng
  • 2016年09月05日 20:48
  • 963
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2008年第33届ACM/ICPC亚洲区预赛(哈尔滨)网络预选赛 1007__The Accomodation of Students 二分图最大匹配+染色
举报原因:
原因补充:

(最多只允许输入30个字)