描述

如今的校园谈恋爱已是习以为常,这不,去上自习也要成双成对的。现在假设某班里有N对情侣从同一寝室楼出发,到达同一个教室上自习。途中,她们可能会经过长廊、静溪等一系列的景点观光游览。但情侣们不希望在途中碰到班里的其他情侣而扫了雅兴。现在给定包括寝室、教室、以及各个景点在内共有M个场景,以及这些场景之间的路径分布情况,请您帮忙为情侣们设计各自单独的散步路线。

输入

输入数据有多组,每组数据的第一行为2个正整数N(1<=N<=50)和M(2<=M<=50),分别表示共有N对情侣,M个场景,我们对场景从1~M进行编号。接下来的M行中,其中第i行的第一个数为正整数K,后面有K个正整数,表示与第i个场景之间有路径相连的场景编号。场景之间的路径是双向的,因此如果a与b之间有路径,那么b与a之间也必然有路径。我们始终假设:编号为1的场景是出发地——寝室楼,编号为2的场景是情侣们的目的地——自习教室。

当N和M均为0时输入结束。

输出

如果能够为情侣们设计出各自单独的散步路线(即除了出发地和目的地外,之间永远不会碰面),那么请输出YES,否则输出NO。

样例输入

3 5
3 3 4 5
3 3 4 5
2 1 2
2 1 2
2 1 2
4 5
3 3 4 5
3 3 4 5
2 1 2
2 1 2
2 1 2
0 0

样例输出

YES
NO

提示

样例的第一个实例对应的解决方案是:

1->3->2

1->4->2

1->5->2

题意

为N对情侣设置各自的路线(从1到2),要求路线不重叠,求是否能满足N对情侣

题解

每条边流量为1,源点S=1,汇点T=2,跑一遍最大流

代码

#include<bits/stdc++.h>
using namespace std; const int N=,M=;
int c[N][N],pre[N],n,m;
bool bfs()
{
int vis[N]={};
memset(pre,,sizeof pre);
queue<int>q;
q.push();
while(!q.empty())
{
int u=q.front();q.pop();
for(int v=;v<=m;v++)
{
if(c[u][v]>&&!vis[v])
{
pre[v]=u;
if(v==)return true;
vis[v]=;
q.push(v);
}
}
}
return false;
}
int maxflow()
{
int flow=;
while(bfs())
{
int d=1e9;
for(int i=;i!=;i=pre[i])d=min(d,c[pre[i]][i]);
for(int i=;i!=;i=pre[i])
c[pre[i]][i]-=d,
c[i][pre[i]]+=d;
flow+=d;
}
return flow;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF,n||m)
{
memset(c,,sizeof c);
for(int i=,k;i<=m;i++)
{
scanf("%d",&k);
for(int j=,v;j<=k;j++)
{
scanf("%d",&v);
c[i][v]=c[v][i]=;
}
}
printf("%s\n",maxflow()>=n?"YES":"NO");
}
return ;
}

TZOJ 3711 浪漫自习(最大流)的更多相关文章

  1. TZOJ 4085 Drainage Ditches(最大流)

    描述 Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. Th ...

  2. TZOJ 4712 Double Shortest Paths(最小费用最大流)

    描述 Alice and Bob are walking in an ancient maze with a lot of caves and one-way passages connecting ...

  3. TZOJ 1911 A Plug for UNIX(最大流)

    描述 You are in charge of setting up the press room for the inaugural meeting of the United Nations In ...

  4. TZOJ 1705 Dining(拆点最大流)

    描述 Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she wil ...

  5. TZOJ 1513 Farm Tour(最小费用最大流)

    描述 When FJ's friends visit him on the farm, he likes to show them around. His farm comprises N (1 &l ...

  6. TZOJ 1594 Optimal Milking(二分+最大流)

    描述 FJ has moved his K (1 <= K <= 30) milking machines out into the cow pastures among the C (1 ...

  7. 微信小程序实战,用vue3实现每日浪漫情话推荐~

    之前做了个恋爱话术微信小程序,实现高情商的恋爱聊天. 但最近突然发现,每天早上给女朋友发一段优美情话可以让她开心一整天,但无奈自己的语言水平确实有限,不能随手拈来,着实让人有点不爽. 不过办法总比困难 ...

  8. 使用C#处理基于比特流的数据

    使用C#处理基于比特流的数据 0x00 起因 最近需要处理一些基于比特流的数据,计算机处理数据一般都是以byte(8bit)为单位的,使用BinaryReader读取的数据也是如此,即使读取bool型 ...

  9. HTML 事件(三) 事件流与事件委托

    本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...

随机推荐

  1. jsfl 常用方法

    //打开fla文档 fl.openDocument (JSFL_PATH+"tongzhi.fla"); //发布flash fl.getDocumentDOM().publish ...

  2. centos下同时启动多个tomcat

    1.解压apache-tomcat-7.0.69.tar.gz到/usr/local目录 .tar.gz -C /usr/local 2.新建目录tomcat7_1和tomcat7_2 tomcat7 ...

  3. Haskell语言学习笔记(71)Semigroup

    Semigroup class Semigroup a where (<>) :: a -> a -> a sconcat :: NonEmpty a -> a stim ...

  4. Java动态代理的两种实现方法

    注:文章转载自:https://blog.csdn.net/m0_38039437/article/details/77970633 一.代理的概念 动态代理技术是整个java技术中最重要的一个技术, ...

  5. 使用rgba设置输入框背景透明

    项目中遇到要求输入框的背景设置透明度,但文字不受影响,如下图 输入框使用input标签 <input ref="searchText" type="search&q ...

  6. 什么是socket?

    1.七层协议简化为四层:应用层.传输层.网络层.链路层:2.套接字是应用层和TCP/IP协议族通信间的软件抽象层,将TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用实现进程在网络中的通信:本地 ...

  7. css美化select标签,兼容ie10 ie10+,chrome。但不支持ie9 ie9-

    让ie9 ie9+ 和非ie的浏览器加载这个hack.ie8,ie8- 就用自己的默认样式 <!-- email:416960428@qq.com author:李可 --> <!- ...

  8. flume 详细介绍

    http://blog.csdn.net/a2011480169/article/details/51544664 配有详细的例子. http://www.cnblogs.com/gongxijun/ ...

  9. GitHub中国区前100名到底是什么样的人?向大佬们学习。

    本文转自:码迷 http://www.mamicode.com/info-detail-1267434.html 本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排 ...

  10. C++与java编程区别(一)

    转载自http://blog.sina.com.cn/s/blog_75f4e17c0101295o.html C++ HelloWorld main.cpp #include< iostrea ...