题意:

保证原边以边权单调非减的顺序读入

思路:先把未知边加入,再加入原始边做MST,考虑从大到小,用数据结构维护,每一条原始边相当两个链赋值操作,每一条未知边相当于一个询问,答案即为询问之和

LCT和树剖都能维护

但因为没有强制在线,可以使用并查集维护

考虑做完MST后预处理出深度,父亲,父边权值三个信息

枚举没有用过的原始边,用类似树剖的方法用并查集每次将一个操作中所有的点缩成一个,暴力更改边权

若有未赋值过的边则无解

 #include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<bitset>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef vector<int> VI;
#define fi first
#define se second
#define MP make_pair
#define N 1100000
#define M 51
#define MOD 1000000007
#define eps 1e-8
#define pi acos(-1)
#define oo 1e9 struct arr
{
int x,y,z;
}a[N]; struct node
{
int x,y;
node(int a,int b)
{
x=a;
y=b;
}
}; int f[N],g[N],fa[N],dep[N],b[N];
vector<node>c[N]; int find(int k)
{
if(fa[k]!=k) fa[k]=find(fa[k]);
return fa[k];
} void dfs(int u)
{
dep[u]=dep[f[u]]+;
for(int i=;i<=(int)c[u].size()-;i++)
{
int v=c[u][i].x;
if(v!=f[u])
{
f[v]=u;
g[v]=c[u][i].y;
dfs(v);
}
}
} int main()
{
int n,k,m;
scanf("%d%d%d",&n,&k,&m);
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=k;i++)
{
int x,y;
scanf("%d%d",&x,&y);
c[x].push_back(node(y,));
c[y].push_back(node(x,));
fa[find(x)]=find(y);
}
for(int i=;i<=m;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
for(int i=;i<=m;i++)
{
int t1=find(a[i].x);
int t2=find(a[i].y);
if(t1!=t2)
{
fa[t1]=t2;
c[a[i].x].push_back(node(a[i].y,a[i].z));
c[a[i].y].push_back(node(a[i].x,a[i].z));
b[i]=;
}
}
f[]=;
dfs();
for(int i=;i<=n;i++) fa[i]=i;
ll ans=;
for(int i=;i<=m;i++)
if(!b[i])
{
int x=find(a[i].x),y=find(a[i].y);
while(x!=y)
{
if(dep[x]<dep[y]) swap(x,y);
if(!g[x])
{
ans+=a[i].z;
g[x]=a[i].z;
}
fa[x]=find(f[x]);
x=find(x);
}
}
for(int i=;i<=n;i++)
if(!g[i])
{
printf("-1\n");
return ;
}
printf("%lld\n",ans);
return ;
}

【CF1023F】Mobile Phone Network(dsu,MST)的更多相关文章

  1. 【Luogu3731】[HAOI2017]新型城市化(网络流,Tarjan)

    [Luogu3731][HAOI2017]新型城市化(网络流,Tarjan) 题面 洛谷 给定一张反图,保证原图能分成不超过两个团,问有多少种加上一条边的方法,使得最大团的个数至少加上\(1\). 题 ...

  2. 【BZOJ5315】[JSOI2018]防御网络(动态规划,仙人掌)

    [BZOJ5315][JSOI2018]防御网络(动态规划,仙人掌) 题面 BZOJ 洛谷 题解 显然图是仙人掌. 题目给了斯坦纳树就肯定不是斯坦纳树了,,,, 总不可能真让你\(2^n\)枚举点集再 ...

  3. 【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划)

    [BZOJ2246][SDOI2011]迷宫探险(搜索,动态规划) 题面 BZOJ 洛谷 题解 乍一看似乎是可以求出每个东西是陷阱的概率,然而会发现前面走过的陷阱是不是陷阱实际上是会对当前状态产生影响 ...

  4. 【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)

    [BZOJ2281][SDOI2011]黑白棋(博弈论,动态规划) 题面 BZOJ 洛谷 题解 先看懂这题目在干什么. 首先BZOJ上面的题面没有图,换到洛谷看题就有图了. 不难发现都相邻的两个异色棋 ...

  5. 【BZOJ2227】[ZJOI2011]看电影(组合数学,高精度)

    [BZOJ2227][ZJOI2011]看电影(组合数学,高精度) 题面 BZOJ 洛谷 题解 这题太神仙了. 首先\(K<N\)则必定无解,直接特判解决. 现在只考虑\(K\ge N\)的情况 ...

  6. 【BZOJ1822】[JSOI2010]冷冻波(二分,网络流)

    [BZOJ1822][JSOI2010]冷冻波(二分,网络流) 题面 BZOJ 洛谷 题解 先预处理每个巫妖可以打到哪些小精灵,然后二分答案,网络流判定即可. #include<iostream ...

  7. 【BZOJ1560】[JSOI2009]火星藏宝图(贪心,动态规划)

    [BZOJ1560][JSOI2009]火星藏宝图(贪心,动态规划) 题面 BZOJ 洛谷 题解 既然所有的位置的权值都大于\(0\),那么就可以直接贪心,按照行为第一关键字,列为第二关键字,来转移. ...

  8. 【BZOJ1044】[HAOI2008]木棍分割(动态规划,贪心)

    [BZOJ1044][HAOI2008]木棍分割(动态规划,贪心) 题面 BZOJ 洛谷 题解 第一问随便二分一下就好了,贪心\(check\)正确性显然. 第二问随便前缀和+单调队列优化一下\(dp ...

  9. 【BZOJ2756】奇怪的游戏(二分,网络流)

    [BZOJ2756]奇怪的游戏(二分,网络流) 题面 BZOJ Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blink ...

随机推荐

  1. java反射操作类方法与属性

    package com.fanshe.test; public class User { private int age; private String email; private String u ...

  2. 类的__new__方法使用

    class Person(object): def __init__(self): self.name ="aaa" def defineName(self): self.name ...

  3. c#一些常用的方法集合

    是从一个asp.net mvc的项目里看到的.挺实用的. 通过身份证号码获取出生日期和性别 通过身份证号码获取出生日期和性别 #region 由身份证获得出生日期 public static stri ...

  4. How to set pycharm configure for remoting development

    配置pycharm远程连接,点击pycharm的tools,选择deployment选项,选择configuration. 2 点击左侧的加号按钮,新增一个连接,取个名字,根据个人配置选择协议,这里选 ...

  5. 剑指offer-链表中倒数第K个结点14

    题目描述 输入一个链表,输出该链表中倒数第k个结点. class Solution: def FindKthToTail(self, head, k): # write code here res=[ ...

  6. 深度可分卷积(Depthwise Separable Conv.)计算量分析

    上次读到深度可分卷积还是去年暑假,各种细节都有些忘了.记录一下,特别是计算量的分析过程. 1. 标准卷积和深度可分卷积 标准卷积(MobileNet论文中称为Standard Convolution, ...

  7. 修改CodeSmith中的SchemaExplorer.MySQLSchemaProvider

    修改C:\Program Files (x86)\CodeSmith\v6.5\Samples\Projects\CSharp\MySQLSchemaProvider\MySQLSchemaProvi ...

  8. HDU 1445 Ride to School

    http://acm.hdu.edu.cn/showproblem.php?pid=1445 Problem Description Many graduate students of Peking ...

  9. PHPExcel 导出包含图片excel

    <?php // 这里用的PHPExcel版本号为1.8.0 // 下载地址https://github.com/PHPOffice/PHPExcel 下载ZIP压缩包 // 下载后将Class ...

  10. 【EasyNetQ】- 发布确认

    默认的AMQP发布不是事务性的,并不保证您的消息实际到达代理.AMQP确实指定了事务发布,但是使用RabbitMQ它非常慢,我们还没有通过EasyNetQ API支持它.对于高性能保证交付,建议您使用 ...