Ural 1671. Anansi's Cobweb(并查集)
题目链接:点击打开链接
思路:
由于我们对删除边之后的状态很难处理, 我们可以考虑对询问倒着处理, 转化成对集合的合并问题。
细节参见代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <ctime>
#include <bitset>
#include <cstdlib>
#include <cmath>
#include <set>
#include <list>
#include <deque>
#include <map>
#include <queue>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef long long ll;
typedef long double ld;
const double eps = 1e-6;
const double PI = acos(-1);
const int mod = 1000000000 + 7;
const int INF = 0x3f3f3f3f;
const int maxn = 1e5 + 10;
int T,n,m,q,p[maxn],vis[maxn],u[maxn],v[maxn],op[maxn];
int _find(int x) { return p[x] == x ? x : p[x] = _find(p[x]); }
int main() {while(~scanf("%d%d",&n, &m)) {for(int i = 1; i <= m; i++) {scanf("%d%d", &u[i], &v[i]);vis[i] = 0;}scanf("%d", &q);for(int i = 1; i <= q; i++) {scanf("%d", &op[i]);vis[op[i]] = 1;}for(int i = 1; i <= n; i++) p[i] = i;int ans = n;for(int i = 1; i <= m; i++) {if(vis[i]) continue;int x = _find(u[i]);int y = _find(v[i]);if(x != y) p[x] = y, --ans;}vector<int> res;for(int i = q; i >= 1; i--) {res.push_back(ans);int id = op[i];int x = _find(u[id]);int y = _find(v[id]);if(x != y) {p[x] = y;--ans;}}for(int i = q-1; i >= 0; i--) {printf("%d%c", res[i], i == 0 ? '\n' : ' ');}}return 0;
}
Ural 1671. Anansi's Cobweb(并查集)相关推荐
- URAL 1671 Anansi's Cobweb (并查集)
一道思维题. 传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20482 题意: 有一张无向图.给Q次删边操作,问每次操 ...
- Ural1671 Anansi's Cobweb 并查集
倒着来 水题 1671. Anansi's Cobweb Time limit: 1.0 second Memory limit: 64 MB Usatiy-Polosatiy XIII decide ...
- Ural 1671 - Anansi's Cobweb 倒过来做...并查集维护..
题意: 给出一个无向图..然后不断的删边..问每次删边后..整个图是由几个联通块组成的.... 题解: 以前做过一个题..是CF上面的...是不断的删边..并询问某两点的最短路..当时的方法是倒过来. ...
- Ural 1671. Anansi's Cobweb
PRO IS HERE Union_Find set: 并查集. 注意我们从后往前加边,离线算法. 如果有某条边删除两次以上,只保留较早的那个删除操作,实现时用vis判断. CODE: #includ ...
- Ural_1671. Anansi's Cobweb(并查集)
/*思路参考大牛,我脑袋被lv踢了,居然想到用数状数组写...思路:并查集,先把不许要删的边用并查集合并,然后把需要删的边逆序加入到并查集中.... My Code:*/ #include <i ...
- ural 1671 Anansi's Cobweb
这道题是并差集的简单应用 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #de ...
- 1671. Anansi's Cobweb(并查集)
1671 并查集 对于询问删除边之后的连通块 可以倒着加边 最后再倒序输出 1 #include <iostream> 2 #include<cstdio> 3 #includ ...
- URAL 1682 Crazy Professor (并查集)
[题目链接] http://acm.timus.ru/problem.aspx?space=1&num=1682 [题目大意] 给出k,从1开始不断地加一并把这个数写在黑板上,如果写上的数字和 ...
- URAL 1982. Electrification Plan(并查集)
题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1982 Some country has n cities. The government ...
最新文章
- Oracle的FIXED_DATE参数
- envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
- 在类别无法直接使用的一些对象或方法
- HDCMS导航高亮显示!解决办法
- 学习RUNOOB.COM进度一
- 池化层在全连接层之间吗,了解最大池化层之后的全连接层的尺寸
- c99什么意思_C语言中-是什么意思啊?
- python迭代器_Python迭代器
- 深入浅出Linux操作系统虚拟机环境下载安装(一)
- 使用 URPF 来阻止IP地址欺骗( IP Address Spoofing)
- OpenCV/Python/dlib眨眼检测
- C++图书管理系统及相应文件的创建与输出
- 长沙举办智慧城市供应链沙龙
- 软件测试的起源和发展、流程 笔记
- java:不支持发行版本5
- 3-对链家二手房数据进行预处理,以及利用CNN进行多分类操作
- php avi格式播放,Linux_网页播放器代码全集,1.avi格式代码片断如下:obje - phpStudy...
- 京东APP地址加密的浅分析
- 文档 IT公司组网,网络布局要考虑周全(图)
- 两化融合贯标补贴!湖北省13市两化融合贯标补贴补助及申请条件、流程汇编大全