[Codeforces 1037E] Trip
[题目链接]
http://codeforces.com/problemset/problem/1037/E
[算法]
首先离线 , 将问题倒过来考虑 , 转化为 : 每次删除一条边 , 此时最多有多少人参加旅行
假设所有点都选取 , 那么 ,如果一个点的度数 < k , 显然这个点不能选 , 我们需要删除它和所有与它相邻的边
显然 , 所有的点和边最多只会被删去一次 , 故时间复杂度为O(N + M)
[代码]
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + ; int n , m , k;
int deg[MAXN],res[MAXN],x[MAXN],y[MAXN],q[MAXN];
bool visited[MAXN],del[MAXN];
vector< int > a[MAXN],b[MAXN]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
int main()
{ read(n); read(m); read(k);
for (int i = ; i <= m; i++)
{
read(x[i]); read(y[i]);
a[x[i]].push_back(y[i]);
a[y[i]].push_back(x[i]);
b[x[i]].push_back(i);
b[y[i]].push_back(i);
deg[x[i]]++; deg[y[i]]++;
}
int l = , r = ,ans = n;
for (int i = ; i <= n; i++)
{
if (deg[i] < k)
{
visited[i] = true;
q[++r] = i;
ans--;
}
}
for (int i = m; i >= ; i--)
{
while (l <= r)
{
int u = q[l++];
for (unsigned j = ; j < a[u].size(); j++)
{
if (!del[b[u][j]])
{
deg[u]--;
deg[a[u][j]]--;
del[b[u][j]] = true;
if (!visited[a[u][j]] && deg[a[u][j]] < k)
{
ans--;
visited[a[u][j]] = true;
q[++r] = a[u][j]; }
}
}
}
res[i] = ans;
if (!del[i])
{
del[i] = true;
deg[x[i]]--;
deg[y[i]]--;
if (!visited[x[i]] && deg[x[i]] < k)
{
visited[x[i]] = true;
ans--;
q[++r] = x[i];
}
if (!visited[y[i]] && deg[y[i]] < k)
{
visited[y[i]] = true;
ans--;
q[++r] = y[i];
}
}
}
for (int i = ; i <= m; i++) printf("%d\n",res[i]); return ; }
[Codeforces 1037E] Trip的更多相关文章
- Codeforces A. Trip For Meal
A. Trip For Meal time limit per test 1 second memory limit per test 512 megabytes input standard inp ...
- [Manthan, Codefest 18][Codeforces 1037E. Trips]
题目链接:1037E - Trips 题目大意:有n个人,m天,每天晚上都会有一次聚会,一个人会参加一场聚会当且仅当聚会里有至少k个人是他的朋友.每天早上都会有一对人成为好朋友,问每天晚上最多能有多少 ...
- Codeforces 1037E Trips
原题 题目大意: 有\(n\)个人,起初他们都不是朋友.总共有\(m\)天,每天会有两个人成为朋友.他们计划在晚上出去旅游,对于一个人,有如下两种情况: 1.要么他不出去旅游 2.要么有至少\(k\) ...
- Trips CodeForces - 1037E(思维dfs)
题意: 就是几个人去旅游,组队的条件是对于某个队员 队里至少有两个是他的朋友,每天早晨都会有一对新人成为朋友 解析: 用set标记互为朋友 a[i] b[i] 表示在第i天早晨 u和v成为朋友 先求最 ...
- codeforces 1037E. Trips(倒叙)
题目传送门: 解题思路: 正着搞好像有点恶心. 反着搞. 一边删一边搞,从崩坏的地方开始,入度--. 最后dfs崩坏,更新答案. 注意要把边删掉防止重复崩坏. 代码: #include<cstd ...
- Codeforces Round #396 (Div. 2) E. Mahmoud and a xor trip dfs 按位考虑
E. Mahmoud and a xor trip 题目连接: http://codeforces.com/contest/766/problem/E Description Mahmoud and ...
- Codeforces 703B. Mishka and trip 模拟
B. Mishka and trip time limit per test:1 second memory limit per test:256 megabytes input:standard i ...
- Codeforces Round #396 (Div. 2) E. Mahmoud and a xor trip
地址:http://codeforces.com/contest/766/problem/E 题目: E. Mahmoud and a xor trip time limit per test 2 s ...
- Codeforces Round #365 (Div. 2) Mishka and trip
Mishka and trip 题意: 有n个城市,第i个城市与第i+1个城市相连,他们边的权值等于i的美丽度*i+1的美丽度,有k个首都城市,一个首都城市与每个城市都相连,求所有边的权值. 题解: ...
随机推荐
- Linux中搭建FTP服务器
FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp 2 ...
- Caused by: java.io.IOException: 您的主机中的软件中止了一个已建立的连接。
异常详情 2017-07-16 10:55:26,218 ERROR [500.jsp] - java.io.IOException: 你的主机中的软件中止了一个已建立的连接. org.apache. ...
- [TyvjP1050] 最长公共子序列(DP)
传送门 f[i][j] 表示第 1 个串匹配到第 i 位,第 2 个串匹配到第 j 位的答案. f[i][j] = max(f[i - 1][j], f[i][j - 1]) (a[i] != ...
- hdu 3657 最小割(牛逼!!!!)总算理解了
<strong></strong> 转载:http://blog.csdn.net/me4546/article/details/6662959 加颜色的太棒了!!! 在网上看 ...
- 2015山东信息学夏令营 Day5T3 路径
问题描述: 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 输入: 第一行包含一个正整数n,表示点数. 接下来 ...
- Android GIS开发系列-- 入门季(11) Callout气泡的显示
一.气泡的简单显示 首先我们要获取MapView中的气泡,通过MapView的getCallout()方法获取一个气泡.看一下Callout的简单介绍: 大体的意思是通过MapView获取Callou ...
- flask到底能登录多少用户?
flask默认情况下是单进程的,所以每次只能处理一个请求: 当然可以多起几个进程或者线程,这样flask就可以处理多个请求: 认证后的用户,进行一次操作(一个GET操作.一次POST操作或者其他),会 ...
- CodeIgniter 向mysql插入数据包括字母、汉字问题
今天在使用ci框架,须要向mysql数据表插入数据.当中的一个字段包括汉字.字母.但是用传统的使用sql语句:insert into XXX这样的方式,不管怎样都插入不成功,最后我换了还有一种方式: ...
- 使用OpenCV读、操作、写图像并与bash合作对某个文件夹下全部图像进行相似处理
我门要对某个文件夹下全部图像文件进行统一处理,假设图像的数量过多.那么手动地一张张处理就会显得有些麻烦.本文使用OpenCV和bash来完毕我们指定的任务. 任务 将文件夹A下的全部统一格式的jpg图 ...
- Pivotal Cloud Foundry安全原理解析
云计算相关的技术差点儿都对传统网络架构和安全规则产生一定的冲击.Pivotal Cloud Foundry(PCF)也不例外,去年8月为了说服专业安全组织允许PaaS部署方案,特意为他们深入讲了下PC ...