比赛的时候想到怎么做了 没调出来(感觉自己是个睿智)

给你N个点M条边,这M条边是一条一条加进去的 要求你求出加入每一条边时图中极大'K度'子图的大小

极大'K度'子图的意思是 要求出一个有尽量多的点的子图 该图中每个点的度数至少为K

因为他每加一条边只会影响到两个点的度数 所以很明显下一个极大'K度'子图是在上一个的基础上得来的

所以如果我们知道在最早哪一步加入边时 产生了极大'K度'子图的话 我们就可以对每条边进行判定得出答案

但是如果每一步都判是否有极大'K度'子图 肯定会超时 该题是离线询问 所以可以考虑倒着做

先把M条边全部加进去 再拓扑排序 每次POP出一个度数小于K的节点  在图中删掉他所连的边 直至队列为空

得出了ans[M] 我们倒着枚举处理每条边即可

 /*Huyyt*/
#include<bits/stdc++.h>
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
vector<int> tree[];
pair<int, int> edge[];
int ans[];
int du[];
queue<int> que;
bool vis[];
map<pair<int, int>, int> mp;
int main()
{
ios_base::sync_with_stdio();
cin.tie(); int n, m, k;
int u, v;
cin >> n >> m >> k;
for (int i = ; i <= m; i++)
{
cin >> u >> v;
edge[i].first = u, edge[i].second = v;
du[v]++, du[u]++;
tree[u].pb(v), tree[v].pb(u);
}
for (int i = ; i <= n; i++)
{
if (du[i] < k)
{
que.push(i);
vis[i] = true;
}
}
while (que.size())
{
int now = que.front();
que.pop();
for (auto v : tree[now])
{
if (mp[make_pair(now, v)])
{
continue;
}
du[v]--;
mp[make_pair(now, v)] = mp[make_pair(v, now)] = ;
if (du[v] < k && (!vis[v]))
{
vis[v] = true;
que.push(v);
}
}
}
for (int i = ; i <= n; i++)
{
if (!vis[i])
{
ans[m]++;
}
}
for (int i = m - ; i >= ; i--)
{
ans[i] = ans[i + ];
u = edge[i + ].first, v = edge[i + ].second;
if (mp[make_pair(u, v)])
{
continue;
}
du[u]--, du[v]--;
mp[make_pair(u, v)] = mp[make_pair(v, u)] = ;
if (du[u] < k && (!vis[u]))
{
vis[u] = true;
que.push(u);
ans[i]--;
}
if (du[v] < k && (!vis[v]))
{
vis[v] = true;
que.push(v);
ans[i]--;
}
while (que.size())
{
int now = que.front();
que.pop();
for (auto v : tree[now])
{
if (mp[make_pair(now, v)])
{
continue;
}
du[v]--;
mp[make_pair(now, v)] = mp[make_pair(v, now)] = ;
if (du[v] < k && (!vis[v]))
{
ans[i]--;
vis[v] = true;
que.push(v);
}
}
}
}
for (int i = ; i <= m; i++)
{
cout << ans[i] << endl;
}
return ;
}

//E.Trips

Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E.Trips的更多相关文章

  1. Codeforces Manthan, Codefest 18 (rated, Div. 1 + Div. 2) D,E

    D. Valid BFS? time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) F 单调栈 + 贡献 + 计数

    https://codeforces.com/contest/1037/problem/F 题意 function z(array a, integer k): if length(a) < k ...

  3. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) E bfs + 离线处理

    https://codeforces.com/contest/1037/problem/E 题意 有n个人,m天,在第i天早上,x和y会成为朋友,每天晚上大家都要上车,假如一个人要上车那么他得有至少k ...

  4. Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C D

    C - Equalize #include<bits/stdc++.h> using namespace std; using namespace std; string a,b; int ...

  5. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)

    还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...

  6. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T4(模拟)

    随便模拟下就过了qwq 然后忘了特判WA了QwQ #include <cstdio> #include <algorithm> #include <cstring> ...

  7. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T3(贪心)

    是一道水题 虽然看起来像是DP,但其实是贪心 扫一遍就A了 QwQ #include <cstdio> #include <algorithm> #include <cs ...

  8. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T2(模拟)

    题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstr ...

  9. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T1(找规律)

    就是找一下规律 但是奈何昨天晚上脑子抽 推错了一项QwQ 然后重新一想 A掉了QwQ #include <cstdio> #include <algorithm> #inclu ...

随机推荐

  1. java:sso(单点登录(single sign on),jsp文件动静态导入方式,session跨域)

    1.jsp文件导入: 2.session跨域: 3.sso(单点登录(single sign on): sso Maven Webapp: LoginController.java: package ...

  2. python--Email提醒

    发送邮箱的协议是STMP,python内置对SMTP支持,可以发送纯文本邮件,HTML邮件和带附件邮件.python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtp ...

  3. 06 vue router(一)

    一.vue route是什么? Vue Router是vue.js官方的路由管理器.主要有以下几种功能 1.路由和视图表的配置.(已明白) 2.模块化和基于组件的路由配置.(已明白) 3.路由参数.查 ...

  4. input.validity

    HTML5为表单提供了自带的输入规则提示 但是实际开发中,我们往往需要自定义提示消息和规则,例如限定了最大值但不要求超出时提示错误信息,这时便用到了H5提供的表单新的JS属性--validity,它是 ...

  5. Linux 中账户管理

    账户管理涉及到三个文件: 1./etc/passwd yy@ubuntu:~$ head -n 3 /etc/passwdroot:x:0:0:root:/root:/bin/bashdaemon:x ...

  6. DFS(深度优先搜索)和BFS(广度优先搜索)

    深度优先搜索算法(Depth-First-Search) 深度优先搜索算法(Depth-First-Search),是搜索算法的一种. 它沿着树的深度遍历树的节点,尽可能深的搜索树的分支. 当节点v的 ...

  7. PHP 调用shell命令

    可以使用的命令: popenfpassthrushell_execexecsystem 1.popen resource popen ( string command, string mode ) 打 ...

  8. 学习shell的第一天

    1.命令历史 作用:查之前使用的命令  关于命令历史的文件  每个用户家目录下面的 .bash_history  在关机的时候,会自动写入一次 (history -a  将内存中的命令历史写入文件)  ...

  9. 【转贴】Windows virtio 驱动

    Windows virtio 驱动 https://blog.51cto.com/dangzhiqiang/1833615 去年去中建总部的时候用过. 发现很多搞openstack的人都不清楚这一块的 ...

  10. [转帖]2018年的新闻: 国内首家!腾讯主导Apache Hadoop新版本发布

    国内首家!腾讯主导Apache Hadoop新版本发布   https://blog.csdn.net/weixin_34194317/article/details/88811258 腾讯也挖了很多 ...