题目描述

LYK有一张无向图G={V,E},这张无向图有n个点m条边组成。并且这是一张带权图,只有点权。 LYK想把这个图删干净,它的方法是这样的。每次选择一个点,将它删掉,但删这个点是需要代价的。假设与这个点相连的还没被删掉的点是u1,u2,…,uk。LYK 将会增加a[u1],a[u2],…,a[uk]的疲劳值。 它想将所有点都删掉,并且删完后自己的疲劳值之和最小。你能帮帮它吗?

数据范围:

数据保证任意两个点之间最多一条边相连,并且不存在自环。

1<=n,m,ai<=100000。

题解:
       ①贪心策略是从权值大的点开始删,统计答案就是了。

       ②证明:每一条边会被删除一次,那么尽可能先删掉这条边权值较大的那一端点.

       ③CZY官方证明:

              把删点转化成删边,定义一条边的边权为一对点后删的点的点权,最后每条边都是要被删掉的。

              对于每条边,肯定优先删除点权大的点。

              正确性证明:将无向图中的边按点权大的点向点权小的点连有向边,最后一定是一张DAG图。

#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std;
const int N=100005;
int n,m,u,v,a[100005];LL ans;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
while(m--)
{
scanf("%d%d",&u,&v);
ans+=min(a[u],a[v]);
}
printf("%lld\n",ans);
return 0;
}//czy020202

你有没有感到,也许永远只能视而不见。

你有没有扔过一枚硬币,选择正反面。————汪峰《硬币》

最新文章

  1. 浅谈Static关键字
  2. 高斯过程(gaussian process)
  3. [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest &amp; 数据驱动
  4. SQL Server2008 MERGE指令用法
  5. JAVA6开发WebService (四)——SAAJ调用WebService
  6. 批次更新BAPI_OBJCL_CHANGE
  7. MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘
  8. [AngularJS] Using $anchorScroll
  9. CSS之颜色英文代码全集
  10. A.prototype.b=22和A.b=22的区别
  11. Java笔记(十三)&hellip;&hellip;面向对象III继承(inheritance)
  12. WIA设备批量扫描
  13. mobile&amp;nbsp;web&amp;nbsp;手机开发
  14. Android 游戏开发 View框架
  15. oracle目录操作
  16. QUICK-AP + BETTERCAP 搭建热点, 欺骗局域网内用户下载任意可执行文件
  17. Gulp自动化构建工具的简单使用
  18. 8.Vue基础
  19. 【WebAPI No.3】API的访问控制IdentityServer4
  20. selenium之 webdriver与三大浏览器版本映射表(更新至v2.29)

热门文章

  1. CodeForces_864_bus
  2. CentOS7下安装FTP
  3. LeetCode summary
  4. ZOJ3329 概率DP
  5. contextmanager 的基本使用
  6. 笔记-爬虫-js代码解析
  7. 3437: 小P的牧场
  8. luoguP1726 上白泽慧音
  9. android IPC 进程间通讯
  10. 万年历Calendar、js修改日期