链接:https://ac.nowcoder.com/acm/contest/548/C
来源:牛客网

题目描述

立华奏是一个刚刚开始学习 OI 的萌新。
最近,实力强大的 QingyuQingyu 当选了 IODS 9102 的出题人。众所周知, IODS 是一场极其毒瘤的比赛。为了在这次比赛中取得好的成绩,立华奏决定学习可能考到的每一个知识点。
在 QingyuQingyu 的博客中,立华奏得知这场比赛总共会考察选手 n 个知识点。此前,立华奏已经依靠自学学习了其中 k 个知识点。接下来,立华奏需要学习其他的知识点,每学习一个单独的知识点,需要消耗的时间为 TiTi 天。同时,某些知识点之间存在联系,可以加速学习的过程。经过计算,立华奏一共发现了其中 m 种联系,第 i 种联系可以表示为(Xi,Yi,Hi)(Xi,Yi,Hi),其含义为“在掌握了第 XiXi 个知识点和第 YiYi 个知识点中任意一个后,学习 HiHi 天即可掌握另一个知识点”。
留给立华奏的时间所剩无几,只有 t 天,因此,她想知道自己能不能在这 t 天内学习完成所有的知识点。

输入描述:

本题输入量较大,请注意使用效率较高的读入方式输入的第一行包含四个整数 n, m, k, t,含义见上所述。
接下来一行,包含 n 个整数,依次表示 T1,T2,⋯,TnT1,T2,⋯,Tn
接下来一行,包含 k 个整数,表示立华奏已经学习过的知识点。如果 k=0,则此处为一空行。接下来 m 行,每行 3 个整数 Xi,Yi,HiXi,Yi,Hi,描述一种联系。

输出描述:

如果立华奏能够学习完所有的知识点,输出一行 Yes。否则输出 No
示例1

输入

4 3 2 5

4 5 6 7

2 3

1 2 3

1 3 2

3 4 2

输出

Yes

思路:创建一个虚拟节点(我是用0) 然后对于已学的点和没学 以及有关联的点进行建边 最后Kruska跑一边

但是这题卡常 所以写法上要尽量优化

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
#define ll long long int
using namespace std;
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int moth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int dir[4][2]={1,0 ,0,1 ,-1,0 ,0,-1};
int dirs[8][2]={1,0 ,0,1 ,-1,0 ,0,-1, -1,-1 ,-1,1 ,1,-1 ,1,1};
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
const int maxn=7e6 + 100;
inline int read(){char ch = getchar(); ll x = 0, f = 1;while(ch < '0' || ch > '9') {if(ch == '-') f = -1; ch = getchar();}while('0' <= ch && ch <= '9') {x = x * 10 + ch - '0'; ch = getchar();}return x * f;
}
struct node{int to;int from;int v;friend bool operator < (node a,node b){return a.v<b.v;}
};
node edge[12000007];
int f[maxn];
int cnt=0;
int n,m,k;
ll t;
void add(int from,int to,int va){ //加边 edge[++cnt].to=to;edge[cnt].v=va;edge[cnt].from=from;
}
int find(int x){if(x!=f[x])f[x]=find(f[x]); return f[x];
}
int main(){//ios::sync_with_stdio(false);n=read(); m=read(); k=read();t=read();int time;int learn;int x,y,h;for(int i=1;i<=n;i++){ //给虚拟节点加上初始边 time=read();add(0,i,time);f[i]=i;}for(int i=1;i<=k;i++){learn=read(); //已经学习的点就和0关联起来就行 f[find(learn)]=0;}for(int i=1;i<=m;i++){ //关联点加边 x=read(); y=read(); h=read();add(x,y,h);}sort(edge+1,edge+1+cnt);ll ans=0;int num=k;for(int i=1;i<=cnt;i++){if(find(edge[i].from)!=find(edge[i].to)){//    cout<<edge[i].from<<" "<<edge[i].to<<endl;f[find(edge[i].from)]=find(edge[i].to);++num;ans+=edge[i].v;}if(num==n||ans>t){break;}}if(ans>t)puts("No");elseputs("Yes");
}

转载于:https://www.cnblogs.com/wmj6/p/10661611.html

牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)相关推荐

  1. 牛客练习赛43 Tachibana Kanade Loves Probability(快速幂)

    链接:https://ac.nowcoder.com/acm/contest/548/B 来源:牛客网 题目描述 立华奏在学习初中数学的时候遇到了这样一道大水题: "设箱子内有 n 个球,其 ...

  2. 牛客练习赛 43 CTachibana Kanade Loves Review 最小生成树(Java版失败)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  3. 牛客练习赛 43 CTachibana Kanade Loves Review 线性做法,贪心(Java版成功)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  4. Tachibana Kanade Loves Review(克鲁斯卡尔 最小生成树)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 Tachibana Kanade Loves Review 时间限制:C/C++ 2秒,其他语言 ...

  5. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

    链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...

  6. 牛客练习赛43 回顾

    链接:https://ac.nowcoder.com/acm/contest/548/A 来源:牛客网 题目描述 这次 Tachibana Kanade 来到了一个神奇的学校参观,她发现了一些有趣的事 ...

  7. 牛客练习赛43 c Tachibana Kanade Loves Review

    题目链接 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IODS 9102 的出题人.众所周知, IODS 是一场极其毒瘤的比赛.为了在这次比赛中取得好的 ...

  8. 牛客练习赛43 f Tachibana Kanade Loves Game

    题目链接 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废.她正在颓废一款名为<IODS 9102>的游戏. 在游戏中,立华奏拥有 k ...

  9. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

最新文章

  1. “人工智能进行临床诊断,至少在今天看来不靠谱”
  2. 网络配置_Linux网络环境配置
  3. 江苏联合阿里云启动“1+30+300”工程 制造业大省欲打造智造模板
  4. python的赋值与参数传递(python和linux切换)
  5. Eclipse生成SSH传输密钥并实现GitHub的SSH代码提交
  6. 基于链表的两个集合的交集(C++)
  7. JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...
  8. Spring Cloud(5)---基于 Spring Cloud 完整的微服务架构实战
  9. 使用vue的生命周期函数_异步_同步获取字典数据---基于Vue的uniapp手机端_前端UI_uview工作笔记003
  10. 初识Visual Studio 2010(四)—— 创建ASP.NET网站
  11. htc one m7刷Linux,htc one m7刷coloros系统教程
  12. 俄文输入法_【俄语怎么学】手把手教你使用俄语输入法
  13. 稳定的服务器主板,高稳定英特尔S2400SC2双路服务器主板
  14. java自定义lock锁
  15. 2018 NOIP 普及组
  16. Alice和Bob的故事---非对称加密
  17. C# 国际化问题之CultureInfo(小数点的不同一些欧洲国家习惯使用,而非.)
  18. Java EE基础练习题
  19. 小米note2 支付宝指纹支付 -10008
  20. Python代码实现NIST随机性测试

热门文章

  1. java 发 腾讯企业邮_(更新)Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
  2. android咖啡动画,WaveLineView 一款性能内存友好的录音波浪动画
  3. 最高月薪18K,再努力一下,再前进一下,也许成功离你只有一步之遥~
  4. P4766 [CERC2014]Outer space invaders(区间dp)
  5. Thinking in uml 大象 系统用例
  6. java mongodb 多表关联查询,多条件查询,分页,排序
  7. JS对图片进行黑白化
  8. CVPR 2022 | QueryDet:使用级联稀疏query加速高分辨率下的小目标检测
  9. 使用Jil序列化JSON提升Asp.net web api 性能
  10. 5个问题,理清做用户画像的成功之道