题意:略

各点向原信念连INF+1的边,不同信念连INF的边,这样割原信念花费大一点。然后好友连1的边。最小割的结果-n*INF就是答案,因为割到哪边最少都要INF。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,SSZ=,APB=,one=,INF=0x7FFFFFFF,mod=;
int n,m,S=,T=,dep[SZ];
int mp[SZ][SZ]; void add(int u,int v,int w)
{
mp[u][v]=w;
} void init()
{
for(int i=;i<=n;++i)
{
int tmp;
cin>>tmp;
if(!tmp)
{
add(S,i,APB+);
add(i,S,);
add(i,T,APB);
add(T,i,);
}
else
{
add(S,i,APB);
add(i,S,);
add(i,T,APB+);
add(T,i,);
}
}
for(int i=;i<=m;++i)
{
int a,b;
cin>>a>>b;
add(a,b,);
add(b,a,);
}
} bool bfs()
{
memset(dep,,sizeof(dep));
dep[S]=;
queue<int> q;
q.push(S);
for(;q.size();)
{
int fr=q.front();
q.pop();
for(int i=;i<=T;++i)
{
if(!dep[i]&&mp[fr][i])
{
dep[i]=dep[fr]+;
q.push(i);
if(i==T)return ;
}
}
}
return ;
} int dinic(int x,int flow)
{
if(x==T)return flow;
else
{
int rem=flow;
for(int i=;i<=T&&rem;++i)
{
if(dep[i]==dep[x]+&&mp[x][i])
{
int tmp=dinic(i,min(rem,mp[x][i]));
if(!tmp)dep[i]=;
rem-=tmp;
mp[x][i]-=tmp,mp[i][x]+=tmp;
}
}
return flow-rem;
}
} void work()
{
int res=;
for(;bfs();)res+=dinic(S,INF);
cout<<res-n*APB<<endl;
} void release()
{
memset(mp,,sizeof(mp));
} int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
//cout<<(1<<31)<<endl;
int casenum;
//cin>>casenum;
//cout<<casenum<<endl;
//for(int time=1;time<=casenum;++time)
for(int time=;cin>>n>>m,n;++time)
{
init();
work();
release();
}
return ;
}

hdoj3138的更多相关文章

随机推荐

  1. aos.css 动画效果

    aos网址 https://codepen.io/michalsnik/pen/WxNdvq <div class="item" data-aos="fade-up ...

  2. C# 截取两个字符串中间的子字符串

    /// <summary> /// 截取中间字符 /// </summary> /// <param name="text">全字符串</ ...

  3. polyfillJS生成promise对象

    https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js

  4. Web前端培训教程:CSS3动画怎么实现的

    动画 CSS3属性中有关于制作动画的三个属性: transform,transition,animation keyframes @keyframes mymove{ from{初始状态属性} to{ ...

  5. 使用特性将数据库返回的datatable转换成对象列表

    public class ColumnMapAttribute : Attribute { private readonly string _name; public ColumnMapAttribu ...

  6. lnmp mysql远程访问设置

    一:iptables 设置开放3306访问 iptables -L -n --line-numbers 1,删除DROP 3306 iptables -D INPUT 5[序列号] 2,添加 ACCE ...

  7. GCOV&LCOV&GCOVR入门

    索引 一.概述 二.关于gcov的安装 三.代码覆盖率测试(以GCOV为例) 1.编译源代码 2.运行可执行程序 3.通过gcov指令生成代码覆盖率报告 四.生成更全面.直观的代码覆盖率报告 1.LC ...

  8. MyTests

    目录 About Tests Selenium自动化测试 Pyppeteer Explain About Tests 扯淡!测试之瞎扯淡 Selenium自动化测试 什么是Selenium? Sele ...

  9. Axure RP 9 Mac正式汉化版安装教程

    Axure RP9 汉化版是mac平台上一款交互式原型设计神器,是专为UX专业人员和业务分析师设计的专业网站原型设计工具!可以帮助他们快速创建应用程序和网站的线框,原型和规格!新功能包括一系列广泛的改 ...

  10. Java线程基础(二)

    今天上午考完了计算机二级,也算卸掉了一个大包袱吧,希望能过!(其实也就考着玩的,不来点考试就要发霉了) 好了,趁着难得的考后休息时间我就接着上一次没写完的继续更新吧. 上一篇文章——>Java核 ...