题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e

题意:给出一个 n 个点 m 条边的无向图,每个点和每条边都有权值,让你删除一些边,使得最终的图中满足条件:一条边存在当且仅当包含该边的连通块的点权值和大于等于该边权值,问最少要移走多少条边。

题解:删边不好做,考虑加边,对于每条边,判断加入是否合法。按边权从小到大排序进行加边,要加入一条边之前,若之前两点不连通,则合并起来变成一个连通块,可以用并查集来维护。存在一种情况,加入一些新的边之后,连通块权值增加,之前不能加入的边现在可以加入了,所以要记录之前连通块中已经加入的边的数量和全部边的数量以及最大的边权,便可以计算可以加入的边的数量。

 #include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define mst(a,b) memset((a),(b),sizeof(a))
#define mp(a,b) make_pair(a,b)
#define pi acos(-1)
#define pii pair<int,int>
#define pb push_back
#define lowbit(x) ((x)&(-x))
const int INF = 0x3f3f3f3f;
const double eps = 1e-;
const int maxn = 1e5 + ;
const int maxm = 1e6 + ;
const ll mod = ; int a[maxn],fa[maxn]; struct edge {
int u,v,w;
bool operator < (const edge &x)const {
return w < x.w;
}
}e[maxn]; int findd(int x) {
return x == fa[x] ? x : fa[x] = findd(fa[x]);
} struct node {
int num,mxedge,ok;
ll sum;
}blo[maxn]; int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
int n,m;
scanf("%d%d",&n,&m);
for(int i = ; i <= n; i++) scanf("%d",&a[i]);
for(int i = ; i <= m; i++) scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
sort(e + , e + + m);
for(int i = ; i <= n; i++) {
fa[i] = i;
blo[i].num = blo[i].mxedge = blo[i].ok = ;
blo[i].sum = a[i];
}
int ans = ;
for(int i = ; i <= m; i++) {
int u = e[i].u, v = e[i].v, w = e[i].w;
int fu = findd(u), fv = findd(v);
if(fu == fv) {
blo[fu].num++;
blo[fu].mxedge = max(blo[fu].mxedge, w);
} else {
fa[fv] = fu;
blo[fu].num += blo[fv].num + ;
blo[fu].mxedge = max(max(blo[fu].mxedge, blo[fv].mxedge), w);
blo[fu].sum += blo[fv].sum;
blo[fu].ok += blo[fv].ok;
} if(blo[fu].sum >= blo[fu].mxedge) {
ans += blo[fu].num - blo[fu].ok;
blo[fu].ok = blo[fu].num;
}
}
printf("%d\n",m - ans);
return ;
}

AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)的更多相关文章

  1. atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges

    题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块 ...

  2. [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)

    [AtCoder] NIKKEI Programming Contest 2019   本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder ...

  3. AtCoder NIKKEI Programming Contest 2019 C. Different Strokes (贪心)

    题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 a ...

  4. [AtCoder] Yahoo Programming Contest 2019

    [AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...

  5. 【AtCoder】全国統一プログラミング王決定戦予選/NIKKEI Programming Contest 2019

    感觉最近好颓,以后不能这么颓了,要省选了,争取省选之前再板刷一面ATC??? A - Subscribers 简单容斥 #include <bits/stdc++.h> #define f ...

  6. NIKKEI Programming Contest 2019 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...

  7. Atcoder Yahoo Programming Contest 2019 简要题解

    A-C 直接放代码吧. A int n,k; int main() { n=read();k=read(); puts(k<=(n+1)/2?"YES":"NO&q ...

  8. AtCoder AISing Programming Contest 2019 Task D. Nearest Card Game

    题目分析在代码注释里. int main() { #if defined LOCAL && !defined DUIPAI ifstream in("main.in" ...

  9. 【AtCoder】AISing Programming Contest 2019

    本来以为是1199rated的..仔细一看发现是1999,所以就做了一下 这场涨分很轻松啊...为啥又没打 等pkuwc考完我一定打一场atcoder(咕咕咕,咕咕咕,咕咕咕咕咕咕咕~) 但是其实我思 ...

随机推荐

  1. 【HTML5校企公益课】第二天

    1.上午讲昨天的作业. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  2. [转帖]CentOS 7 安装 GlusterFS

    CentOS 7 安装 GlusterFS https://www.cnblogs.com/jicki/p/5801712.html 改天测试一下 我一直没有搞这一块呢.   CentOS 7 Glu ...

  3. hadoop常见问题收集

    hadoop 搭建 常用命令记录 快捷键安装在/user/local/bin目录下 nano 文件名 ctrl + k 剪切一行 ctrl + o 保存并重命名,不重命名直接enter ctrl + ...

  4. linux服务器安装tomcat

    linux服务器安装tomcat 准备: 下载一个tomcat,官网连接:http://tomcat.apache.org/ 版本选择合适的 安装tomcat之前要先安装Java jdk 可以参考我的 ...

  5. Burp Suite的安装与使用

    ​ Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击.在渗透测试中,我们使用Burp Suite将使得测试工作变 ...

  6. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)

    今年,本公司全新发布了囊括Java.HTML5前端.大数据.Python爬虫.全链UI设计.软件测试.Unity 3D.Go语言等多个技术方向的全套视频. 面对这么多的知识点,有的盆友就麻爪了…… 我 ...

  7. PB笔记之导入、导出组件

    导入组件 导出组件

  8. 转载:centos安装gitlab详解

    原文地址:http://blog.csdn.net/jiangtao_st/article/details/73612298 一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程 ...

  9. 详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须 ...

  10. python day3 int,str,list类型补充

    目录 python day 3 1. int类小知识点 2. str类小知识点 3. list类小知识点 python day 3 (学习资料来自老男孩教育) 2019/10/06 1. int类小知 ...