[ABC270F] Transportation
[ABC270F] Transportation
题意
有 \(n\) 个点,有 \(m\) 条可以加上的边,如果两个点同时建立了一种东西,那么也算连了一条边,每条边都有个代价,每个点建一个东西也有不同的代价,问想要让图连通,最少需要多少代价。
思路
显然是最小生成树,但是由于可以见两种东西,所以比较难处理,所以可以将这个点权变成一条边,这样就好处理了,所以可以额外开两个点 \(n + 1\) 和 \(n + 2\),可以将所有点的两种建东西的代价作为边权连向它们,但可以不建东西,所以做四次最小生成树即可。
代码
#include <algorithm>
#include <iostream>
using namespace std;
const int MaxN = 2e5 + 10;
struct S {
int u, v, w;
bool operator<(const S &j) const {
return w < j.w;
}
} a[MaxN + 2 * MaxN];
int n, m, tot;
long long fa[MaxN], ans = 1e18;
bool vis[MaxN];
int FindFather(int x) {
return fa[x] < 0 ? x : fa[x] = FindFather(fa[x]);
}
void insert(int x, int y) {
x = FindFather(x), y = FindFather(y);
if (fa[x] < fa[y]) {
swap(x, y);
}
fa[y] += fa[x], fa[x] = y;
}
int main() {
cin >> n >> m;
for (int i = 1, u; i <= n; i++) {
cin >> u;
a[++tot] = {i, n + 1, u};
}
for (int i = 1, u; i <= n; i++) {
cin >> u;
a[++tot] = {i, n + 2, u};
}
for (int i = 1, u, v, w; i <= m; i++) {
cin >> u >> v >> w;
a[++tot] = {u, v, w};
}
sort(a + 1, a + tot + 1);
for (int u = 0; u < 4; u++) {
fill(fa + 1, fa + n + 4, -1);
fill(vis + 1, vis + n + 4, 0);
long long sum = 0;
for (int i = 1; i <= tot; i++) {
if ((a[i].v == n + 1 && ((u >> 1) & 1) != 1) || (a[i].v == n + 2 && (u & 1) != 1)) {
continue;
}
if (FindFather(a[i].u) != FindFather(a[i].v)) {
sum += a[i].w, vis[a[i].u] = vis[a[i].v] = 1;
insert(a[i].u, a[i].v);
}
}
int cnt = 0;
for (int i = 1; i <= n + 4; i++) {
cnt += vis[i];
}
if (u == 0) {
if (cnt != n) {
sum = 1e18;
}
} else if (u == 1 || u == 2) {
if (cnt != n + 1) {
sum = 1e18;
}
} else if (u == 3) {
if (cnt != n + 2) {
sum = 1e18;
}
}
ans = min(ans, sum);
}
cout << ans << endl;
return 0;
}
[ABC270F] Transportation的更多相关文章
- POJ 1797 Heavy Transportation(最大生成树/最短路变形)
传送门 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 31882 Accept ...
- 【HDU 4940】Destroy Transportation system(无源无汇带上下界可行流)
Description Tom is a commander, his task is destroying his enemy’s transportation system. Let’s repr ...
- Heavy Transportation(最短路 + dp)
Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64 ...
- POJ 1797 Heavy Transportation (Dijkstra变形)
F - Heavy Transportation Time Limit:3000MS Memory Limit:30000KB 64bit IO Format:%I64d & ...
- poj 1797 Heavy Transportation(最短路径Dijkdtra)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 26968 Accepted: ...
- POJ 1797 Heavy Transportation
题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- uva301 - Transportation
Transportation Ruratania is just entering capitalism and is establishing new enterprising activiti ...
- POJ 1797 Heavy Transportation (最短路)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 22440 Accepted: ...
- POJ 1797 Heavy Transportation (dijkstra 最小边最大)
Heavy Transportation 题目链接: http://acm.hust.edu.cn/vjudge/contest/66569#problem/A Description Backgro ...
- TOJ3744(Transportation Costs)
Transportation Costs Time Limit(Common/Java):2000MS/6000MS Memory Limit:65536KByte Total Submi ...
随机推荐
- ANOMALY: use of REX.w is meaningless (default operand size is 64)
1.打开注册机:win+ R 输入regedit2.找到目录:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\TEC\Ocular.3\agent\config 并添加值3.新增项 ...
- Python——基础知识(一)
1. 那么多编程语言,为什么学python 易于学习,是所有编程语言当中最容易学习的 没有最好的语言,只有最合适的语言 2. 反复执行的用例如何提升效率 测试流程回归(回顾) 很多测试用例在不同的测试 ...
- 在Vue3+TypeScript 前端项目中使用事件总线Mitt
事件总线Mitt使用非常简单,本篇随笔介绍在Vue3+TypeScript 前端项目中使用的一些场景和思路.我们在Vue 的项目中,经常会通过emits 触发事件来通知组件或者页面进行相应的处理,不过 ...
- 剑指 offer 第 8 天
第 8 天 动态规划(简单) 剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) ...
- golang 中的 cronjob
引言 最近做了一个需求,是定时任务相关的.以前定时任务都是通过 linux crontab 去实现的,现在服务上云(k8s)了,尝试了 k8s 的 CronJob,由于公司提供的是界面化工具,使用.查 ...
- 1688关键字搜索新品数据API接口(item_search_new-按关键字搜索新品数据)
1688关键字搜索新品数据API接口(item_search_new-按关键字搜索新品数据)代码接口教程如下: 公共参数 名称 类型 必须 描述key String 是 调用key(必须以GET方式拼 ...
- SpringIOC注入
在lagou的训练营的学习历程 SpringIOC实例化Bean的三种方式:1.使用无参构造器2.静态方法3.实例化方法.他要先实例化创建类(和2的区别),再调用. XML注入属性DI依赖注入,根据实 ...
- w11修改ie保护模式方法
IE安全设置下有4个区域 对应的设置在不同的注册表中.[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Set ...
- UnrealEngine - 网络同步入门
1 网络同步机制 UE 提供了强大的网络同步机制: RPC :可以在本地调用,对端执行 属性同步:标记一个属性为 UPROPERTY(Replicated) 就可以自动将其修改后的值同步到客户端 移动 ...
- 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)
一.创建ASP.NET Core Web API项目(若项目已创建,则可跳过本节内容) 1.双击打开VS2022. 2.单击"创建新项目",如下图. 3.选择"ASP.N ...