CL-20

考虑定义一条有向边 \(u\rightarrow v\) 的意义为 \(u\) 把窝让给了 \(v\),那么每个点一定入度为 \(1\),所有的边会形成一个外向基环树森林。

贪心地把猫娘按照权值从大到小排序,每个猫娘看成一条无向边,那么可行的方案一定会形成一个基环树森林。

用并查集维护所有窝组成的基环树,用标记来记录一个并查集代表的集合为基环树还是树,然后考虑选择一条边的方法:

如果合并的两个点属于同一个并查集:

如果这个并查集是一棵树,那么可以选,并标记为基环树;

否则不选。

如果合并的两个点不属于一个并查集:

如果合并两棵树,那么可以选,标记为树;

如果合并一棵树,一棵基环树,那么可以选,标记为基环树;

否则不选。

#include<bits/stdc++.h>
using namespace std;
const int N=200001;
struct Edge{
int u,v,w;
bool operator <(const Edge &a)const{return w>a.w;}
}e[N];
int fa[N],d[N];
int n,m,sum;
int find(int x){
return fa[x]==x?x:fa[x]=find(fa[x]);
}
int main(){
cin>>m>>n;
for(int i=1;i<=n;++i){
fa[i]=i;
d[i]=1;
}
for(int i=1;i<=m;++i){
scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
}
sort(e+1,e+m+1);
for(int i=1;i<=m;++i){
int x=find(e[i].u),y=find(e[i].v);
if(x!=y&&(d[x]||d[y])) fa[x]=y,sum+=e[i].w,d[y]=d[x]&d[y];
else if(x==y&&d[x]) d[x]=0,sum+=e[i].w;
}
printf("%d\n",sum);
}

[Tkey] Transport Nekomusume II的更多相关文章

  1. ZOJ 1655 FZU 1125 Transport Goods

    迪杰斯特拉最短路径. 1.every city must wait till all the goods arrive, and then transport the arriving goods t ...

  2. 2020: [Usaco2010 Jan]Buying Feed, II

    2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 220  Solved: 162[ ...

  3. 微软职位内部推荐-SW Engineer II for Azure Network

    微软近期Open的职位: Software Engineer II The world is moving to cloud computing. Microsoft is betting Windo ...

  4. POJ-2336 Ferry Loading II(简单DP)

    Ferry Loading II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3763 Accepted: 1919 Desc ...

  5. HNU 13411 Reverse a Road II(最大流+BFS)经典

    Reverse a Road II Time Limit: 10000ms, Special Time Limit:25000ms, Memory Limit:65536KB Total submit ...

  6. poj 2336 Ferry Loading II ( 【贪心】 )

    Ferry Loading II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3704   Accepted: 1884 ...

  7. poj-2336 Ferry Loading II(dp)

    题目链接: Ferry Loading II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3946   Accepted: ...

  8. TOJ 2419: Ferry Loading II

    2419: Ferry Loading II  Time Limit(Common/Java):1000MS/10000MS     Memory Limit:65536KByteTotal Subm ...

  9. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...

  10. USACO Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...

随机推荐

  1. Python按条件筛选、剔除表格数据并绘制剔除前后的直方图

      本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除:同时,对筛选前.后的数据分别绘 ...

  2. 【JavaWeb】封装一个MVC框架

    框架参考自: https://www.bilibili.com/video/BV1gV411r7ct 在老师的基础上添加了 1.POST参数处理 2.Tomcat8版本下中文乱码处理 3.可声明请求方 ...

  3. 【转转】 Huber Loss

    原文地址: https://www.cnblogs.com/nowgood/p/Huber-Loss.html ============================================ ...

  4. Linux系统下使用pytorch多进程读取图片数据时的注意事项——DataLoader的多进程使用注意事项

    原文: PEP 703 – Making the Global Interpreter Lock Optional in CPython 相关内容: The GIL Affects Python Li ...

  5. NVIDIA公司的半成品项目cule——GPU端运行的Atari2600游戏环境——已经废弃的项目

    官网介绍地址: https://developer.nvidia.com/blog/new-open-source-gpu-accelerated-atari-emulator-for-reinfor ...

  6. 国产深度学习框架MindSpore的高校发展之旅——“样本点”计划

    MindSpore这个框架我是使用时间比较早的了,因为这是华为的产品,而且正好是我所在的领域,再加上前些年华为的那些爱国宣传,我是大力支持这个软件的,而且是非常支持的那种.虽然之前就知道华为的这个软件 ...

  7. [CEOI 2013] 千岛之国 / Adritic 题解

    前言 题目链接:洛谷. 题意简述 你被困在一个被划分为 \(2500 \times 2500\) 的二维平面内!平面上有 \(n\)(\(n \leq 250000\))个岛屿你可以停留,你可以在这些 ...

  8. 武汉市委郭元强书记、盛阅春代市长会见白鲸开源CEO郭炜等嘉宾代表

    2024年6月14日,第二届软件创新发展大会在中国武汉举行.大会云集了来自全国的书数百位院士.专家.知名软件企业负责人,包括中国工程院院士倪光南.中国科学院院士陈十一.国家工业信息安全发展研究中心总工 ...

  9. 社区6月月报 | Apache SeaTunnel重要更新与优化记录

    各位热爱Apache SeaTunnel的小伙伴们,社区6月份月报来啦!这里将记录Apache SeaTunnel社区每月的重要更新,欢迎关注. 月度Merge Stars 感谢以下小伙伴上个月为Ap ...

  10. 牛客周赛 Round 7

    牛客周赛 Round 7 A-游游的you矩阵_牛客周赛 Round 7 (nowcoder.com) 把四种字符凑一起看看有没有\(y,o,u\)就行 #include <bits/stdc+ ...