2019.2.14 t3 车辆销售
- 用算法求最大生成树,在并查集合并时,把原本的一个根连向另一个 根改成两个根都连向一个新建的节点,并把当前正在处理的边的权值赋给这个新 节点做点权。这样形成的结构会是一棵树。 一个点的答案大致上是树的根到自己的路径上,相邻两个节点的子树叶节点 数的平方和。需要注意的是父子两个节点权值相同的情况,这个部分需要特殊处理。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cctype>
using namespace std; #define LL long long
#define res register int
inline int read()
{
int x(),f(); char ch;
while(!isdigit(ch=getchar())) if(ch=='-') f=-;
while(isdigit(ch)) x=x*+ch-'',ch=getchar();
return f*x;
}
int n,m;
const int N=+;
int head[N],nxt[N<<],ver[N<<],tot;
struct E{
int u,v,w;
}e[N];
int vis[N],fa[N];
LL w[N],size[N],val[N];
inline bool cmp(E a,E b) {return a.w>b.w;}
inline void add(int x,int y) {
ver[++tot]=y; nxt[tot]=head[x]; head[x]=tot;
ver[++tot]=x; nxt[tot]=head[y]; head[y]=tot;
} inline int get(int x) {
if(x==fa[x]) return x; return fa[x]=get(fa[x]);
} int cnt();
inline void Kruskal()
{
cnt=n;
sort(e+,e+m+,cmp);
for(res i= ; i<=n ; i++) fa[i]=i;
for(res i= ; i<=m ; i++)
{
int x=get(e[i].u),y=get(e[i].v),z=e[i].w;
if(x==y) continue;
val[++cnt]=z;
fa[cnt]=fa[x]=fa[y]=cnt;
add(x,cnt); add(y,cnt);
if(cnt==*n-) break;
}
} inline void dfs(int x,int f)
{
vis[x]=;
for(res i(head[x]) ; i ; i=nxt[i])
{
int y=ver[i]; if(f==y) continue;
dfs(y,x); size[x]+=size[y];
}
} inline void dp(int x,int f)
{
for(res i(head[x]) ; i ; i=nxt[i])
{
int y=ver[i]; if(f==y) continue;
if(val[x]==val[y]) size[y]=size[x];
w[y]=w[x]+(size[x]-size[y])*(size[x]-size[y]);
dp(y,x);
}
} inline void work()
{
for(res i= ; i<=n ; i++) size[i]=;
for(res i= ; i<=cnt ; i++)
{
if(vis[i]) continue;
int x=get(i);
dfs(x,);
dp(x,);
}
} int main()
{
freopen("car.in","r",stdin);
freopen("car.out","w",stdout);
n=read(); m=read()-;
for(res i= ; i<=m ; i++) {
e[i].u=read(); e[i].v=read(); e[i].w=read();
}
Kruskal();
work();
for(res i= ; i<=n ; i++) cout<<w[i]<<" ";//printf("%d ",w[i]);
puts("");
return ;
}
2019.2.14 t3 车辆销售的更多相关文章
- 每日一练ACM 2019.04.14
2019.4.14 第1001题:Sum Problem Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Onli ...
- CSP-S 2019 Day 2 T3 树的重心
CSP-S 2019 Day 2 T3 树的重心 题 给出了一个大小为\(n\)的树,树中结点从 1∼n 编号.小简单的课后作业是求出这棵树单独删去每条边后,分裂出的两个子树的重心编号和之和. \(n ...
- 2019.2.14 考试T3 交互题
\(\color{#0066ff}{ 题目描述 }\) 由于机房被成功拯救了,花_Q很高兴,花_Q生成了一个 0 到 N - 1 的排列(排列的下标从 0 到 N - 1 ).保证排列中 0 在 N ...
- 2019.03.14 ZJOI2019模拟赛 解题报告
得分: \(100+100+0=200\)(\(T1\)在最后\(2\)分钟写了出来,\(T2\)在最后\(10\)分钟写了出来,反而\(T3\)写了\(4\)个小时爆\(0\)) \(T1\):风王 ...
- [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)
[多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...
- 2019.8.14 NOIP模拟测试21 反思总结
模拟测试20的还没改完先咕着 各种细节问题=错失190pts T1大约三分钟搞出了式子,迅速码完,T2写了一半的时候怕最后被卡评测滚去交了,然后右端点没有初始化为n…但是这样还有80pts,而我后来还 ...
- @CSP模拟2019.10.16 - T3@ 垃圾分类
目录 @description@ @solution@ @accepted code@ @details@ @description@ 为了保护环境,p6pou建设了一个垃圾分类器. 垃圾分类器是一个 ...
- 2019.4.14 python基础30
前面学习的变量,数据类型(整型,浮点数,布尔),序列(字符串,列表,元祖,字典,集合) ,可以看做是数据的组织方式.数据可以看做是“砖块”! 流程控制语句是代码的组织方式,可以看做是“混凝土” 一个完 ...
- 2019.02.14 codechef Chef at the Food Fair(线段树+泰勒展开)
传送门 题意:现在有nnn个位置,每个位置上有一个值aia_iai. 要求支持如下两种操作: 区间乘vvv 求区间的(1−ai)(1-a_i)(1−ai)之积 思路: 考虑转换式子: Ans=∏i ...
随机推荐
- windows版本免安装redis, nginx, zookeeper
redis官网:https://redis.io/ windows版本免安装redis下载链接:https://github.com/MSOpenTech/redis/releases nginx官网 ...
- Python之多进程和多线程
目标: 1.os.fork简单示例 2.使用os.fork多进程测试IP是否在线 3.使用os.fork多进程解决tcpserver多客户端连接问题 4.多线程测试IP地址是否在线 1.os.fork ...
- 253. Meeting Rooms II 需要多少间会议室
[抄题]: Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],.. ...
- centos 6.5 部署openvpn 2.4
软件下载地址 软件下载地址 https://openvpn.net/index.php/open-source/downloads.html 服务端 源Tarball(gzip) https://sw ...
- solr 基本命令二(权重查找)
package zr.com.solr.utils; import java.io.IOException; import java.util.HashMap; import java.util.Li ...
- Windows 毫秒计时
#include <windows.h> #include <iostream> using namespace std; LARGE_INTEGER MilliSecondT ...
- wins 软件安装
1.x86 x64区别86就是原来的32位操作系统64就是现在比较新的64位操作系统
- SVM之SMO算法(转)
支持向量机(Support Vector Machine)-----SVM之SMO算法(转) 此文转自两篇博文 有修改 序列最小优化算法(英语:Sequential minimal optimizat ...
- sublime 3插件安装记录
安装sublime 3的package control管理器: 从菜单 View - Show Console 或者 ctrl + ~ 快捷键,调出 console.将以下 Python 代码粘贴进去 ...
- WireShark抓包的pcap文件格式分析
http://www.360doc.com/content/14/0220/11/15257968_354157537.shtml http://www.360doc.com/content/14/0 ...