Codeforces 891C Envy
感觉这种最小生成树上的啥题都差不多的解法。。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ull unsigned long long using namespace std; const int N = 5e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-;
const double PI = acos(-); int n, m, q, a[N], b[N], w[N], va[N], vb[N], e[N];
vector<int> vc[N]; int fa[N];
int getRoot(int x) {
return fa[x] == x ? x : fa[x] = getRoot(fa[x]);
} bool cmp(const int& a, const int& b) {
return w[a] < w[b];
} int main() {
scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++) fa[i] = i;
for(int i = ; i <= m; i++) {
scanf("%d%d%d", &a[i], &b[i], &w[i]);
vc[w[i]].push_back(i);
}
for(int i = ; i <= ; i++) {
if(!SZ(vc[i])) continue;
for(auto& x : vc[i]) {
va[x] = getRoot(a[x]);
vb[x] = getRoot(b[x]);
}
for(auto& x : vc[i]) {
fa[getRoot(b[x])] = getRoot(a[x]);
}
}
scanf("%d", &q);
while(q--) {
bool flag = true;
int num; scanf("%d", &num);
for(int i = ; i <= num; i++) scanf("%d", &e[i]);
for(int i = ; i <= num; i++) {
if(va[e[i]] == vb[e[i]]) {
flag = false;
break;
}
}
if(!flag) {
puts("NO");
continue;
}
sort(e + , e + + num, cmp);
for(int L = , R = ; L <= num && flag; L = R) {
while(R <= num && w[e[R]] == w[e[L]]) R++;
for(int i = L; i < R; i++) {
int x = va[e[i]], y = vb[e[i]];
fa[x] = x, fa[y] = y;
}
for(int i = L; i < R; i++) {
int x = va[e[i]], y = vb[e[i]];
int u = getRoot(x), v = getRoot(y);
if(u == v) {
flag = false;
break;
}
fa[v] = u;
}
}
if(flag) puts("YES");
else puts("NO");
}
return ;
} /*
*/
Codeforces 891C Envy的更多相关文章
- Codeforces 891C Envy(MST + 并查集的撤销)
题目链接 Envy 题意 给出一个连通的无向图和若干询问.每个询问为一个边集.求是否存在某一棵原图的最小生成树包含了这个边集. 考虑$kruskal$的整个过程, 当前面$k$条边已经完成操作的时 ...
- CodeForces - 891C: Envy(可撤销的并查集&最小生成树)
For a connected undirected weighted graph G, MST (minimum spanning tree) is a subgraph of G that con ...
- Codeforces 892E Envy
问题描述 小Q正在玩一个叠塔的游戏,游戏的目标是叠出尽可能高的塔.在游戏中,一共有n张矩形卡片,其中第i张卡片的 长度为a_i,宽度为b_i.小Q需要把所有卡片按一定顺序叠成一座塔,要求对于任意一个矩 ...
- Codeforces 891 C Envy
题目大意 给定一个 $n$ 个点 $m$ 条边的连通的无向图,每条边有一个权值,可能有重边.给出 $q$ 组询问,一组询问给出 $k$ 条边,问是否存在一棵最小生成树包含这 $k$ 条边. 思路 这道 ...
- Codeforces Round #446 (Div. 2)
Codeforces Round #446 (Div. 2) 总体:rating涨了好多,虽然有部分是靠和一些大佬(例如redbag和ShichengXiao)交流的--希望下次能自己做出来2333 ...
- 【CF891C】Envy(最小生成树)
[CF891C]Envy(最小生成树) 题面 Codeforces 洛谷 题解 考虑\(MST\)的构建过程,对于所有权值相同的边一起考虑. 显然最终他们连出来的结果是固定的. 把连边改为把联通块联通 ...
- Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) F. Souvenirs 线段树套set
F. Souvenirs 题目连接: http://codeforces.com/contest/765/problem/F Description Artsem is on vacation and ...
- 代码的坏味道(18)——依恋情结(Feature Envy)
坏味道--依恋情结(Feature Envy) 特征 一个函数访问其它对象的数据比访问自己的数据更多. 问题原因 这种气味可能发生在字段移动到数据类之后.如果是这种情况,你可能想将数据类的操作移动到这 ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
随机推荐
- 宕机不等于关机,阴魂不散的vm
今天早上刚到公司,就发现研发环境的机器连不上了. 公司研发环境的部署比较简单,物理机上装VMware Esxi 6 ,然后在esxi上装虚机. 检查发现:esxi ping不通,客户端也连不上:物理机 ...
- java实现网页验证码
Servlet: package cn.bdqn.servlet; import javax.imageio.ImageIO; import javax.servlet.ServletExceptio ...
- MAC洪水攻击
MAC洪水攻击原理 传统的交换机在数据转发过程中依靠对CAM表的查询来确定正确的转发接口,一旦在查询过程中无法找到相关的目的MAC对应的条目,此数据帧将作为广播帧来处理,CAM表的容量有限,只能存储不 ...
- MySQL - 日常操作二 备份还原
登录mysql的命令 # 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 mysql -h 110. -P3306 -uroot -p mysql -uroot -p -S /dat ...
- Oracle sqlplus失去响应解决方法/如何在数据库失去响应时转储状态信息(转)
某云平台出现故障,sqlplus连接Oracle数据库,发现没有响应.数据库版本:12.1.0.2.0 查找.借鉴前人经验,成功处理此问题,参考网址:如何在数据库失去响应时转储状态信息 - Oracl ...
- CentOS6.8安装配置sonarqube6.4
下载最新版本的sonar(现在改名叫sonarqube) https://www.sonarqube.org/downloads/ 我下载的版本是Sonarqube6.4 1 使用前需要 ...
- NSURLResponse下载
// // ViewController.m // 05-NSURLConnestion(下载) // // Created by jerry on 15/10/24. // Copyright (c ...
- MFC_CFileDialog_选择文件夹
场景 在MFC中有时候只需要选择一个文件夹而不需要选择文件,这时候可以通过下列方式来进行选择 技术点 BROWSEINFO typedef struct_browseinfo { HWND hwndO ...
- Libevent源码分析—event_base_dispatch()
我们知道libevent是一个Reactor模式的事件驱动的网络库. 到目前为止,我们已经看了核心的event和event_base结构体的源码,看了初始化这两个结构体的源码,看了注册event的 ...
- How to Repair GRUB2 When Ubuntu Won’t Boot
Ubuntu and many other Linux distributions use the GRUB2 boot loader. If GRUB2 breaks—for example, if ...