沈阳网络赛F-Fantastic Graph【贪心】or【网络流】
"Oh, There is a bipartite graph.""Make it Fantastic."
X wants to check whether a bipartite graph is a fantastic graph. He has two fantastic numbers, and he wants to let all the degrees to between the two boundaries. You can pick up several edges from the current graph and try to make the degrees of every point to between the two boundaries. If you pick one edge, the degrees of two end points will both increase by one. Can you help X to check whether it is possible to fix the graph?
Input
There are at most 3030 test cases.
For each test case,The first line contains three integers NN the number of left part graph vertices, MM the number of right part graph vertices, and KK the number of edges ( 1 \le N \le 20001≤N≤2000,0 \le M \le 20000≤M≤2000,0 \le K \le 60000≤K≤6000 ). Vertices are numbered from 11to NN.
The second line contains two numbers L, RL,R (0 \le L \le R \le 300)(0≤L≤R≤300). The two fantastic numbers.
Then KK lines follows, each line containing two numbers UU, VV (1 \le U \le N,1 \le V \le M)(1≤U≤N,1≤V≤M). It shows that there is a directed edge from UU-th spot to VV-th spot.
Note. There may be multiple edges between two vertices.
Output
One line containing a sentence. Begin with the case number. If it is possible to pick some edges to make the graph fantastic, output "Yes"(without quote), else output "No" (without quote).
样例输入复制
3 3 7
2 3
1 2
2 3
1 3
3 2
3 3
2 1
2 1
3 3 7
3 4
1 2
2 3
1 3
3 2
3 3
2 1
2 1
样例输出复制
Case 1: Yes
Case 2: No
题目来源
题意:
有一个二分图 每个节点的初始分数为0
每选一条边 边的端点的分数都加1
问如果要求最后所有端点的分数都在l和r之间 可不可以做到
思路:
比赛的时候凌晓突然说这个是上下限网络流的模板题
于是一大帮人就想着怎么改模板 一直到比赛结束都没有改出来
真的没想到居然可以贪心 还好名额拿到了......
很简单的策略:
相当于删除一些边 使得节点的度数在l和r之间 最后剩下的边就是选择的边
枚举每条边 如果u, v的度都大于R 那么这条边肯定可以删掉
如果u的度大于R, v的度小于R却大于L 那么这条边也可以删掉
同理 uv交换也是
如果本来uv的度就在LR之间 就不用管了
最后检查每一个节点的度是不是在LR之间 结束
贪心AC:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<vector>
#include<cmath>
#include<cstring>
#include<set>
//#include<bits/stdc++.h>
#define inf 0x7f7f7f7f7f7f7f7f
using namespace std;
typedef long long LL;
const int maxk = 6005;
const int maxn = 4005;
int n, m, k, l, r;
struct edge {
int u, v;
}e[maxk];
int degree[maxn];
void init()
{
memset(degree, 0, sizeof(degree));
}
int main()
{
int cas = 1;
while (scanf("%d%d%d", &n, &m, &k) != EOF) {
init();
scanf("%d%d", &l, &r);
for (int i = 0; i < k; i++) {
scanf("%d%d", &e[i].u, &e[i].v);
e[i].v += n;
degree[e[i].u]++;
degree[e[i].v]++;
}
for (int i = 0; i < k; i++) {
int a = e[i].u, b = e[i].v;
if (degree[a] > r && degree[b] > r) {
degree[a]--;
degree[b]--;
}
else if (degree[a] > l || degree[b] > l) {
degree[a]--;
degree[b]--;
}
}
bool flag = true;
for (int i = 1; i <= n + m; i++) {
if (degree[i] > r || degree[i] < l) {
flag = false;
break;
}
}
if (flag) {
printf("Case %d: Yes\n", cas++);
}
else {
printf("Case %d: No\n", cas++);
}
}
return 0;
}
上下限网络流的算法正在学习中......
沈阳网络赛F-Fantastic Graph【贪心】or【网络流】的更多相关文章
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (贪心或有源汇上下界网络流)
"Oh, There is a bipartite graph.""Make it Fantastic."X wants to check whether a ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph (上下界网络流)
正解: #include <bits/stdc++.h> using namespace std; const int INF = 0x3f3f3f3f; const int MAXN=1 ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- 沈阳网络赛 F - 上下界网络流
"Oh, There is a bipartite graph.""Make it Fantastic." X wants to check whether a ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F Fantastic Graph(贪心或有源汇上下界网络流)
https://nanti.jisuanke.com/t/31447 题意 一个二分图,左边N个点,右边M个点,中间K条边,问你是否可以删掉边使得所有点的度数在[L,R]之间 分析 最大流不太会.. ...
- ACM-ICPC 2018 沈阳赛区网络预赛 F. Fantastic Graph(有源上下界最大流 模板)
关于有源上下界最大流: https://blog.csdn.net/regina8023/article/details/45815023 #include<cstdio> #includ ...
- 2018 ICPC 沈阳网络赛
2018 ICPC 沈阳网络赛 Call of Accepted 题目描述:求一个算式的最大值与最小值. solution 按普通算式计算方法做,只不过要同时记住最大值和最小值而已. Convex H ...
- ACM-ICPC 2019南昌网络赛F题 Megumi With String
ACM-ICPC 南昌网络赛F题 Megumi With String 题目描述 给一个长度为\(l\)的字符串\(S\),和关于\(x\)的\(k\)次多项式\(G[x]\).当一个字符串\(str ...
- 计蒜客 31447 - Fantastic Graph - [有源汇上下界可行流][2018ICPC沈阳网络预赛F题]
题目链接:https://nanti.jisuanke.com/t/31447 "Oh, There is a bipartite graph.""Make it Fan ...
随机推荐
- am335x uart分析
/************************************************************ * am335x uart分析 * 本文记录am335x uart驱动的注册 ...
- e679. 浮雕化图像
This example demonstrates a 3x3 kernel that embosses an image. Kernel kernel = new Kernel(3, 3, new ...
- (转载)UTF-8和GBK的编码方式的部分知识:重要
GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节) ...
- App 应用通过网页打开 App Store
NSURL *url = nil; if ([[[UIDevice currentDevice] systemVersion] intValue] >= 7.0) { //iOS7 使用旧的网址 ...
- 【ML】概率图模型
http://wenku.baidu.com/link?url=-Fa32JAnvwS8fyWgdPjYLNGvmor42lWCT6N7TehNQAnx4ZVmJtC0L0SgnaLtEFMB9Gzw ...
- windows 2008 r2 安装TabsStudio
windows 2008 r2 安装TabsStudio 办法如下: HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer.如果没有这个项,则新建这个项 ...
- Supervisor安装与配置(非守护进程管理工具)
http://blog.csdn.net/xyang81/article/details/51555473
- python2.0_s12_day9_协程&多线程和cpu,磁盘io之间的关系
事件驱动和异步io有什么直接关系. 当我们访问一个网页,不考虑网络问题.我们人类不觉得网页慢. 但是实际中对计算机来说还是慢.那慢在哪里.io io操作是整个网络操作中最慢的.比如你打开网页要是有2秒 ...
- Windows上Tomcat启动,服务中没有Tomcat
首先需要查看Tomcat的bin目录下是否有service.bat,如果没有需要去下载一版bin目录下有service.bat的Tomcat,只有Windows版本的Tomcat的bin目录下才有se ...
- 安装配置博客WordPress
1.下载并解压WordPress cd /usr/local/src wget https://cn.wordpress.org/wordpress-4.4.2-zh_CN.tar.gztar zcv ...