这题标解是改一下匈牙利算法,显然,像我这种从不用匈牙利的人,会找个办法用网络流…

具体做法是这样,二分最后的答案ans,然后对前ans个问题建图跑网络流,看最大流能不能到ans。

 /**************************************************************
Problem: 1191
User: zhuohan123
Language: C++
Result: Accepted
Time:64 ms
Memory:3128 kb
****************************************************************/ #include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
using namespace std;
int head[],pointsize;
struct edge{int to,next,c,p;};
edge g[];int gnum=;
void addedge(int from,int to,int c)
{
g[++gnum].to=to;g[gnum].c=c;g[gnum].next=head[from];head[from]=gnum;
g[++gnum].to=from;g[gnum].c=;g[gnum].next=head[to];head[to]=gnum;
}
int dfsstart,dfsend,ans;
bool haveans;int dfsans;
int d[],vd[];
void dfs(int po)
{
if(po==dfsend)
{
ans+=dfsans;
haveans=true;
return ;
}
int mind=pointsize-,tempans=dfsans;
for(int i=head[po];i;i=g[i].next)
if(g[i].c)
{
if(d[g[i].to]+==d[po])
{
if(g[i].c<dfsans)dfsans=g[i].c;
dfs(g[i].to);
if(d[dfsstart]>=pointsize)return ;
if(haveans)
{
g[i].c-=dfsans;
g[i^].c+=dfsans;
return ;
}
dfsans=tempans;
}
if(d[g[i].to]<mind)mind=d[g[i].to];
}
vd[d[po]]--;
if(!vd[d[po]])d[dfsstart]=pointsize;
d[po]=mind+;vd[d[po]]++;
}
int isap(int start,int end)
{
ans=;
memset(d,,sizeof(d));
memset(vd,,sizeof(vd));
vd[]=pointsize;
dfsstart=start;
dfsend=end;
while(d[dfsstart]<pointsize)
{
dfsans=;
haveans=false;
dfs(dfsstart);
}
return ans;
}
int n,m;
int mj[][];
bool check(int po)
{
gnum=;memset(head,,sizeof(head));
for(int i=;i<=n;i++)addedge(n+m+,i,);
for(int i=;i<=po;i++)addedge(i+n,n+m+,);
pointsize=n+m+;
for(int i=;i<=po;i++)
{
addedge(mj[i][]+,i+n,);
addedge(mj[i][]+,i+n,);
}
return po==isap(n+m+,n+m+);
}
int imerge(int l,int r)
{
if(l==r)return l;
int mid=(l+r)/+;
if(check(mid))return imerge(mid,r);
else return imerge(l,mid-);
}
int main(int argc ,char *argv[])
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)scanf("%d%d",&mj[i][],&mj[i][]);
printf("%d\n",imerge(,m));
return ;
}

BZOJ1191: [HNOI2006]超级英雄Hero的更多相关文章

  1. [BZOJ1191][HNOI2006]超级英雄Hero 类似二分图的最大匹配

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4740  Solved: 2162[Submit][ ...

  2. BZOJ1191 [HNOI2006]超级英雄Hero 二分图匹配

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1191 题目概括 有m个题目,有n个解决方案:对于每一个题目,有两种解决方案可用. 每种解决方案只能 ...

  3. 【题解】 bzoj1191: [HNOI2006]超级英雄Hero (二分图)

    bzoj1191,懒得复制,戳我戳我 Solution: 二分图最大匹配板子题 Attention: 注意题干中的一句话 只有当选手正确回答一道题后,才能进入下一题,否则就被淘汰. Code: //I ...

  4. 【二分图】【最大匹配】【匈牙利算法】bzoj1191 [HNOI2006]超级英雄Hero

    裸的最大匹配. #include<cstdio> #include<vector> #include<cstring> using namespace std; v ...

  5. bzoj 1191: [HNOI2006]超级英雄Hero

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MB 二分图匹配... Description 现在电视台有一种节目叫做超 ...

  6. BZOJ 1191: [HNOI2006]超级英雄Hero 二分匹配

    1191: [HNOI2006]超级英雄Hero Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或 ...

  7. bzoj 1191: [HNOI2006]超级英雄Hero 并查集 || 匈牙利算法

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1804  Solved: 850[Submit][S ...

  8. bzoj 1191 [HNOI2006]超级英雄Hero(最大基数匹配)

    1191: [HNOI2006]超级英雄Hero Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2813  Solved: 1331[Submit][ ...

  9. BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)

    云神说他二分图匹配从来都是用网络流水过去的...我要发扬他的精神.. 这道题明显是二分图匹配.网络流的话可以二分答案+最大流.虽然跑得很慢.... -------------------------- ...

随机推荐

  1. ios第三方分享到qq、微信、人人网、微博总结

    我们开发出来的APP通常要通过第三方分享到其他社交平台,如qq.微博微信 等.通过分享可以提高APP的传播效率,增加APP的曝光率,因此也算是APP功能 里的标配了吧.目前常用的第三方分享途径有qq. ...

  2. Nginx服务器架构简析

    一.Nginx的模块化 模块化结构的思想是一个很久的概念,但也正是成熟的思想造就了Nginx的巨大优越性. 我们知道Nginx从总体上来讲是有许多个模块构成的.习惯将Nginx分为5大模块分别为:核心 ...

  3. CoverFlow效果

    1. 成员函数 mCamera是用来做类3D效果处理,比如z轴方向上的平移,绕y轴的旋转等 mMaxRotationAngle是图片绕y轴最大旋转角度,也就是屏幕最边上那两张图片的旋转角度 mMaxZ ...

  4. JavaScript高级程序设计之函数

    函数实际上是对象,每个函数都是Function类型的实例. 函数是引用类型. 函数名实际上是一个指向函数对象的指针,不会与某个函数绑定. // 这种写法更能表达函数的本质 var sum = func ...

  5. Entity Framework 插入数据出现重复插入(导航属性硬是要查再一遍???????)

    问题: Artist artmodel = new Artist(); artmodel.user = uinfo; _artiests.Add(artmodel); 新增一条Artist记录,但是同 ...

  6. 条款11:在operator=中处理“自我赋值”

    什么是自我赋值,就是 v = v 这种类型的语句,也许很多人都会说鄙视这种写法,但是如下的写法会不会出现呢? 比如:a[i] = a[j];      // 不巧的是i可能和j相等 *px = *py ...

  7. cocos2dx中导演的职责有哪些?

    1.一个游戏里面只有一个导演,因此采用了单例的设计模式,用getInstance方法来获得 2.游戏中导演负责openGL ES的初始化,场景的切换,游戏的暂停继续(相当于拍电影的ka),节点坐标与世 ...

  8. 团队项目——二手书店(NABC分析)

    特色:可发布 N:登陆用户可自行发布售书信息,为学生提供一个网上交易旧书的平台. A:后台数据库管理,对于新登陆的用户信息加以整合,统一发布. B:想出手旧书的学生可从中获取不小的利益,而且也可以实现 ...

  9. [转载]ubuntu下如何更改mysql数据存放路径

    http://www.gaojinbo.com/ubuntu%E4%B8%8B%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9mysql%E6%95%B0%E6%8D%AE%E ...

  10. ios应运程序的五种状态

    ios应运程序的五种状态即转化  从apple的官方文档扣下来的 5状态: Not running The app has not been launched or was running but w ...