Wannafly挑战赛20-A,B

匿名 (未验证) 提交于 2019-12-03 00:42:01

A-链接:https://www.nowcoder.com/acm/contest/133/A
来源:牛客网

题目描述

现在有一棵被Samsara-Karma染了k种颜色的树,每种颜色有着不同的价值
Applese觉得Samsara-Karma染的太难看了,于是打算把整棵树重新染成同一种颜色
但是,由于一些奥妙重重的原因,每一次染色Applese可以选择两个有边相连的点,将其中一个染成另一个的颜色。而进行一次这样的操作需要付出两种颜色价值和的代价
现在,Applese的钱要用来买书(game),所以他想要最小化代价

输入描述:

输入包括若干行
第一行包括一个数n,表示这棵树有n个节点
第二行包括n个数,第i个数表示第i个节点的颜色col
i

**注意:一个颜色的标号即价值
接下来的n - 1行,每行包括两个数u, v,表示u节点与v节点之间有一条无向边
n ≤ 100000, 1 ≤ coli ≤ 1e9,数据保证是一棵树

输出描述:

输出包括一行
第一行包括一个数,表示最小代价
示例1

输入

复制
4 2 3 4 3 1 2 2 3 3 4

输出

复制
12
边的输入根本就是多余的,直接枚举所有颜色统计最小的值即可。
  
 1 #include<bits/stdc++.h>  2 using namespace std;  3 #define ll long long   4 #define inf 0x3f3f3f3f3f3f3f  5 int col[100010];  6 map<int,int>M;  7 int main(){  8     int n,m,i,j,k;  9     while(cin>>n){ll u,v,tot=0,all=0; 10     M.clear(); 11         for(i=1;i<=n;++i) { 12         scanf("%d",col+i); 13         all+=col[i]; 14         M[col[i]]++; 15         } 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!