「2018 集训队互测 Day 4」小修和小栋生♂成树

就类似增广路那么做

把边看成点

每次肯定是选一条已选未选交替出现的路

j-i-k这样的一段//i已选

例如G1上去掉i可加入j,G2上去掉i可加入k

边aG1可加,G2去b可加

边cG1去b可加,G2去d可加

。。。

边 xxx G1去 yyy 可加,G2可加

找个顺序连边就行

直接可以加入的点连上源汇

注意顺序和连源汇的关系

#include<bits/stdc++.h>
#define file(KSCN) freopen(KSCN".in","r",stdin),freopen(KSCN".out","w",stdout)
using namespace std;
typedef long long ll;
namespace IO{
	const int ios=1<<17;
	char R[ios],*Rc=R,*RB=R;int pass;
	inline int gec(){return(Rc==RB&&(RB=(Rc=R)+fread(R,1,ios,stdin),Rc==RB))?EOF:*Rc++;}
	template<typename Tp>inline int read(Tp&A){
		static int c,sg;c=gec();sg=0;A=0;
		while(!isdigit(c)&&c!=EOF)sg|=(c=='-'),c=gec();
			if(c==EOF)return EOF;
		while(isdigit(c))A=(A<<3)+(A<<1)&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值