http://codeforces.com/contest/1037/problem/E

逆向考虑 先拓扑把度数小于k的点入队列松驰其他点 最后剩下的点的数量就是最后一次查询的答案

然后逆向枚举删边 还是拓扑 把度数小于k的点入队列 删完当前这条边后 有几个点度数变为小于k 答案就减几

注意无向图拓扑时边要特判

#include <bits/stdc++.h>
using namespace std;struct node1
{int u;int v;
};struct node2
{int id;int v;int next;
};queue <int> que;
node1 pre[200010];
node2 edge[400010];
int first[200010],degree[200010],book[200010],ans[200010],flag[200010];
int n,m,k,num;void addedge(int id,int u,int v)
{edge[num].id=id;edge[num].v=v;edge[num].next=first[u];first[u]=num++;
}void init()
{int i,id,u,v;for(i=1;i<=n;i++){if(degree[i]<k){que.push(i);book[i]=1;}}while(!que.empty()){u=que.front();que.pop();for(i=first[u];i!=-1;i=edge[i].next){id=edge[i].id,v=edge[i].v;if(flag[id]==0){degree[v]--;if(degree[v]<k&&book[v]==0){que.push(v);book[v]=1;}flag[id]=1;}}}for(i=1;i<=n;i++) if(book[i]==0) ans[m]++;
}void solve()
{int i,j,id,u,v;for(i=m;i>=1;i--){ans[i-1]=ans[i];if(flag[i]) continue;flag[i]=1;degree[pre[i].u]--,degree[pre[i].v]--;if(degree[pre[i].u]<k&&book[pre[i].u]==0){que.push(pre[i].u);book[pre[i].u]=1;ans[i-1]--;}if(degree[pre[i].v]<k&&book[pre[i].v]==0){que.push(pre[i].v);book[pre[i].v]=1;ans[i-1]--;}while(!que.empty()){u=que.front();que.pop();for(j=first[u];j!=-1;j=edge[j].next){id=edge[j].id,v=edge[j].v;if(flag[id]==0){degree[v]--;if(degree[v]<k&&book[v]==0){que.push(v);book[v]=1;ans[i-1]--;}flag[id]=1;}}}}for(i=1;i<=m;i++) printf("%d\n",ans[i]);
}int main()
{int i;scanf("%d%d%d",&n,&m,&k);memset(first,-1,sizeof(first));num=0;for(i=1;i<=m;i++){scanf("%d%d",&pre[i].u,&pre[i].v);addedge(i,pre[i].u,pre[i].v);addedge(i,pre[i].v,pre[i].u);degree[pre[i].u]++,degree[pre[i].v]++;}init();solve();return 0;
}

Trips CodeForces - 1037E相关推荐

  1. [Manthan, Codefest 18][Codeforces 1037E. Trips]

    题目链接:1037E - Trips 题目大意:有n个人,m天,每天晚上都会有一次聚会,一个人会参加一场聚会当且仅当聚会里有至少k个人是他的朋友.每天早上都会有一对人成为好朋友,问每天晚上最多能有多少 ...

  2. Codeforces 1037E Trips

    原题 题目大意: 有\(n\)个人,起初他们都不是朋友.总共有\(m\)天,每天会有两个人成为朋友.他们计划在晚上出去旅游,对于一个人,有如下两种情况: 1.要么他不出去旅游 2.要么有至少\(k\) ...

  3. Codeforces 1037E. Trips

    STL的强大不得不服,应该还有更优的做法 倒着查询,刚开始把所有边和点都考虑在内,之后依次从后往前删边,然后删除不符条件的点 重点在于如何删除不符合条件的点,我用set<pair<int, ...

  4. Codeforces 1037E Trips 图论,人类智慧

    文章目录 题意 题解 题目链接 题意 每天早上有两人成为朋友,朋友之间不会传递;每天晚上举行一次聚会,对每个人来说他如果参加聚会,则不少于 k k k个他的朋友必须参加聚会.问每天晚上能参加聚会的最多 ...

  5. Codeforces - Trips

    题目链接:Codeforces - Trips 加边不好想,所以我们直接反向删边. 每次删除一条边,那么对应两个点的度都减1,每次都把度小于k的删掉,剩下的点就是答案. 删点直接标记即可,删边在set ...

  6. Codeforces 605E :Intergalaxy Trips

    传送门 题解: 如果知道最终的大小关系就比较好做. 不过我们发现最后如果确定了大小关系,那么大的只会从小的转移过来.那么我们现在从小到大逐个确定就好了. #include <bits/stdc+ ...

  7. codeforces #274 C. Riding in a Lift dp+前缀和优化

    codeforces #274  C. Riding in a Lift   dp+前缀和优化 Imagine that you are in a building that has exactly  ...

  8. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  9. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

最新文章

  1. 安卓市场官方版_尖端实用的安卓手机APP推荐 是你们想要的!
  2. windows环境下,django + mongoengine + mongodb环境配置
  3. Linux串口应用编程
  4. [css] 你知道什么是动态伪类吗?
  5. 为什么今年好多人开始买基金了,是疫情影响的吗?
  6. python中jupyter notebook 去掉警告
  7. mysql 序列 语句_MySQL 序列使用
  8. 光伏发电极其并网控制matlab/simulink仿真文件,最大功率点跟踪采用扰动观察法
  9. 数学建模——线性规划篇
  10. 虚幻引擎5安装踩坑记录
  11. 进程同步与信号量机制的应用
  12. 电商行业短信平台选择,电商行业短信通道选择考虑的问题
  13. 1071svm函数 r语言,科学网—R中的svm - 吴锐的博文
  14. python知道三角形三边求面积(海伦公式)
  15. 一首经典的情歌 - 天涯歌女
  16. 阿凡达(Avatar)迄今为止最搞笑最靠谱的2个影评
  17. 追忆第一次南下深圳有哪些重大抉择(上)?
  18. Kubernetes Pod 网络精髓:pause 容器详解
  19. 微信小程序 JS中遍历后台获取的data数据并赋值
  20. wav转mp3怎么转?几种值得学习的转换方法,打开看看!

热门文章

  1. wordpress html音乐,给你的WordPress博客文章中插入背景音乐的方法(纯代码,非插件)...
  2. Thinkpad电脑安装ubuntu,遇到问题“Minimal BASH-like line editing is supported”
  3. Python视觉摄像头检测有趣项目之机器学习和概率论重点概念分析重要(三)(重点)
  4. 国内SSD品牌如何异军突起
  5. mpv播放器键盘快捷键
  6. java 刷新文件夹 代码_UpdateFile.java(更新指定文件夹的文件)作者:阿飞
  7. 循迹追踪令人头秃的Crash,十倍程序员的Debug日常(2)
  8. Linux打印一个文字logo
  9. 《Java 后端面试经》微服务篇
  10. 洛谷P2336 喵星球上的点名