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

具体做法是这样,二分最后的答案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. python 爬虫-sohu抓小说

    #coding:utf-8 import urllib2 import sys import re '): realurl = "%s%s%s" %(url,offset,'.sh ...

  2. 安装boost1.57.0__注意之前mgiza似乎因为boost没有安装也没有完全编译成功

    首先下载(废话) 解压, ./bootstrap.sh 之后在运行b2 ./b2 -j8 --prefix=$PWD --libdir=$PWD/lib64 --layout=system link= ...

  3. spring aop 使用注解方式总结

    spring aop的注解方式:和xml的配置方式略有区别,详细如下: 1.首先还是建立需要的切面类:切面类里面定义好切点配置,以及所有的需要实现的通知方法. /** * */ package com ...

  4. Go channel同步

    我们可以使用Channel来同步不同goroutines的执行.看下面的代码: package main import "fmt" import "time" ...

  5. Swift function how to return nil

    这两天在学习Stanford出品的iOS7的课程,这个课程去年也看过,但是看到第3课就不行了,满篇的OC,把人都搞晕了.这段时间因为要写个iOS的App,正好赶上了Swift问世,所以趁着这股劲继续学 ...

  6. Qt入门1---widget、mainwindow和Dialog区别

    摘要: 看了一个月的Qt,居然没有理清Qt中 ------------------------------------ 1.QMainWindow A main window provides a f ...

  7. 30.DDR2问题2_local_init_done为什么没拉高?

    按照初始化时序,在200us时,mem_clk时钟稳定,开始初始化设置,设置完后,会产生一个初始化完成标志,local_init_done会拉高,没有拉高,可能有以下几个原因: 1.确认DDR2 IP ...

  8. 一、JPEG文件格式-----压缩框架

    JPEG文件格式 http://wenku.baidu.com/view/4856d31dc281e53a5802ff0d.html 标记名 FF E0                         ...

  9. responsive layout

    http://cssdeck.com/labs/7wsdvxdc http://getbootstrap.com/css/ http://getbootstrap.com/2.3.2/scaffold ...

  10. php中curl的详细解说(转载)

    本文转自:http://blog.csdn.net/yanhui_wei/article/details/21530811 这几天在帮一些同学处理问题的时候,突然发现这些同学是使用file_get_c ...