题意是啥…….

思路:

不是与1或n连起来的边 边权是1

否则是inf

跑网络流

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=66666,inf=0x3f3f3f3f;
queue<int>q;
int n,num,yy,ans,jy,w[N],v[N],first[N],next[N],tot,vis[N];
void add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
bool tell(){
memset(vis,-1,sizeof(vis)),vis[1]=0;
queue<int>q;q.push(1);
while(!q.empty()){
int t=q.front();q.pop();
for(int i=first[t];~i;i=next[i])if(w[i]&&!~vis[v[i]])
vis[v[i]]=vis[t]+1,q.push(v[i]);
}return ~vis[n];
}
int zeng(int x,int y){
if(x==n)return y;
int r=0;
for(int i=first[x];~i;i=next[i])if(vis[v[i]]==vis[x]+1&&w[i]){
int t=zeng(v[i],min(y-r,w[i]));
w[i]-=t,w[i^1]+=t,r+=t;
}
if(!r)vis[x]=-1;
return r;
}
int main(){
memset(first,-1,sizeof(first));
scanf("%d",&n);
for(int i=1;i<n;i++){
scanf("%d",&num);
while(num--){
scanf("%d",&yy);
if(yy!=n&&i!=1)add(i,yy,inf),add(yy,i,0);
else add(i,yy,1),add(yy,i,0);
}
}
while(tell())while(jy=zeng(1,inf))ans+=jy;
printf("%d\n",ans);
}

BZOJ 2929 网络流的更多相关文章

  1. bzoj 2929 [Poi1999]洞穴攀行 网络流

    2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 499  Solved: 295[Submit][Status][ ...

  2. BZOJ 2929: [Poi1999]洞穴攀行

    2929: [Poi1999]洞穴攀行 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 351  Solved: 195[Submit][Status][ ...

  3. BZOJ 1797 网络流的可行边&必须边

    求完网络流以后 tarjan一发 判一判 //By SiriusRen #include <queue> #include <bitset> #include <cstd ...

  4. BZOJ 3931 (网络流+最短路)

    题面 传送门 分析 考虑网络流 注意到数据包走的是最短路,所以我们只需要考虑在最短路上的边 由于最短路可能有多条,我们先跑一遍Dijkstra,然后再\(O(m)\) 遍历每条边(u,v,w) 如果d ...

  5. bzoj 1458 网络流

    我们可以知道每行最多可以有多少个格子不用建点,设为x[i],每列同理设为y[i],那么我们连接(source,i,x[i]),(i,sink,y[i])表示我们将一个格子不建点,那么(i,j,flag ...

  6. bzoj 1927 网络流

    首先我们可以知道这道题中每个点只能经过一次,那么我们引入附加源汇source,sink,那么我们可以将每个点拆成两个点,分别表示对于图中这个节点我们的进和出,那么我们可以连接(source,i,1,0 ...

  7. BZOJ 1711 网络流

    思路: 神建图 源->饮料 边权为1 牛拆点 两个点之间的边权为1 饮料->左牛 边权为1 右牛->食品 边权为1 食品->汇边权为1 //By SiriusRen #incl ...

  8. BZOJ 1391 网络流

    vis[0]没有清零查一年- //By SiriusRen #include <cstdio> #include <cstring> #include <algorith ...

  9. BZOJ 4657 (网络流)

    题面 Nick最近在玩一款很好玩的游戏,游戏规则是这样的: 有一个n*m的地图,地图上的每一个位置要么是空地,要么是炮塔,要么是一些BETA狗,Nick需要操纵炮塔攻击BETA狗们. 攻击方法是:对于 ...

随机推荐

  1. sphinx在windows下的简单安装与使用

    1.下载地址 http://sphinxsearch.com/downloads/release/,我这里下的是“Win64 binaries w/MySQL+PgSQL+libstemmer+id6 ...

  2. CNN结构:SPP-Net为CNNs添加空间尺度卷积-神经元层

    前几个CNN检测的框架要求网络的图像输入为固定长宽,而SPP-Net在CNN结构中添加了一个实现图像金字塔功能的卷积层SPP层,用于在网络中实现多尺度卷积,由此对应多尺度输入,以此应对图像的缩放变换和 ...

  3. js replace替换所有字符

    'abc...'.replace(new RegExp('oldStr', 'gm'), 'newStr')

  4. vue-router 嵌套路由没反应

    先看下route.js //route.js const App = () => import('../App.vue'); const Login = () => import('../ ...

  5. luogu P2422 良好的感觉 单调栈

    Code: #include<bits/stdc++.h> #define maxn 1000000 #define ll long long using namespace std; v ...

  6. BZOJ 1724: [Usaco2006 Nov]Fence Repair 切割木板 贪心 + 堆 + 反向思考

    Description Farmer John想修理牧场栅栏的某些小段.为此,他需要N(1<=N<=20,000)块特定长度的木板,第i块木板的长度为Li(1<=Li<=50, ...

  7. vue 导航菜单默认子路由

    export default new Router({ routes: [ { path: '/', name: 'index', component: index, children: [ { pa ...

  8. TensorFlow学习笔记----安装(1)

    在入门前,推荐一个博客链接:https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/ Windows下tensorflow ...

  9. 9day条件语句和基本数据类型

    1基本数据类型: 字符串‘’," ",''' ''' 单引号,双引号,三引号 加法: n1='ruser' n2='sb' n3=n1+n2 print(n3) 乘法: n1='r ...

  10. 单例模式的理解【php】

    单例模式(Singleton Pattern):顾名思义,就是只有一个实例.作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 为什么要使用单例模式 1.P ...