博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
缩点 CF893C Rumor
阅读量:4841 次
发布时间:2019-06-11

本文共 1584 字,大约阅读时间需要 5 分钟。

CF893C Rumor

有n个人,其中有m对朋友,现在你有一个秘密你想告诉所有人,第i个人愿意出价a[i]买你的秘密,获得秘密的人会免费告诉它的所有朋友(他朋友的朋友也会免费知道),现在他们想出最少的价钱买秘密,那么你最少能得到多少钱?

刷水利于身心健康。

code:

#include 
#include
#include
#define int long longusing namespace std;const int wx=100017;inline int read(){ int sum=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();} while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();} return sum*f;}int head[wx],dfn[wx],low[wx],belong[wx];int a[wx],val[wx],st[wx];int n,m,ans,num,tot,top,col;struct e{ int nxt,to;}edge[wx*2];void add(int from,int to){ edge[++num].nxt=head[from]; edge[num].to=to; head[from]=num;}void Tarjan(int u){ dfn[u]=low[u]=++tot; st[++top]=u; for(int i=head[u];i;i=edge[i].nxt){ int v=edge[i].to; if(!dfn[v]){ Tarjan(v); low[u]=min(low[u],low[v]); } else if(!belong[v]){ low[u]=min(low[u],dfn[v]); } } if(dfn[u]==low[u]){ belong[u]=++col; while(st[top]!=u){ belong[st[top]]=col; top--; }top--; }}signed main(){ n=read(); m=read(); for(int i=1;i<=n;i++)a[i]=read(); for(int i=1;i<=m;i++){ int x,y; x=read(); y=read(); add(x,y); add(y,x); } for(int i=1;i<=n;i++)if(!dfn[i])Tarjan(i); for(int i=1;i<=col;i++)val[i]=1e18; for(int i=1;i<=n;i++)val[belong[i]]=min(val[belong[i]],a[i]); for(int i=1;i<=col;i++)ans+=val[i]; printf("%lld\n",ans); return 0;}

转载于:https://www.cnblogs.com/wangxiaodai/p/9910071.html

你可能感兴趣的文章
NSCondition
查看>>
常用单词7
查看>>
html5中input的type类型有哪些(总结)
查看>>
(转)dp动态规划分类详解
查看>>
手机归属地查询
查看>>
关于运动
查看>>
GridView的RowCommand事件传两个或以上参数
查看>>
剑指Offer编程题2——替换空格
查看>>
ubuntu切换到root
查看>>
MYSQL limit用法
查看>>
Windows7下出现“不支持此接口”的解决方案
查看>>
实现dhtmlxTree树型控件单击展开收缩功能
查看>>
不能在DropDownList 中选择多个项
查看>>
【Unity渲染】Camera RenderToCubemap 渲染到立方体纹理
查看>>
n2n网络穿透内网
查看>>
让“懒惰” Linux 运维工程师事半功倍的 10 个关键技巧!
查看>>
写给自己看的小设计4 - 对象设计通用原则之扩展原则
查看>>
oem 重建
查看>>
LNMP之Nginx
查看>>
构造函数中的异常处理(转)
查看>>