codevs 4093 EZ的间谍网络
由于外国间谍的大量渗入,学校安全正处于高度的危机之中。YJY决定挺身而作出反抗。如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B。有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报。所以,如果我们能够收买一些间谍的话,我们就可能控制间谍网中的每一分子。因为一旦我们逮捕了一个间谍,他手中掌握的情报都将归我们所有,这样就有可能逮捕新的间谍,掌握新的情报。
我们的神通广大的YJY获得了一份资料,色括所有已知的受贿的间谍,以及他们愿意收受的具体数额。同时我们还知道哪些间谍手中具体掌握了哪些间谍的资料。假设总共有n个间谍(n不超过3000),每个间谍分别用1到3000的整数来标识。
请根据这份资料,判断我们是否有可能控制全部的间谍,如果可以,求出我们所需要支付的最少资金。否则,输出不能被控制的一个间谍。
第一行只有一个整数n。
第二行是整数p。表示愿意被收买的人数,1≤p≤n。
接下来的p行,每行有两个整数,第一个数是一个愿意被收买的间谍的编号,第二个数表示他将会被收买的数额。这个数额不超过20000。
紧跟着一行只有一个整数r,1≤r≤8000。然后r行,每行两个正整数,表示数对(A, B),A间谍掌握B间谍的证据。
如果可以控制所有间谍,第一行输出YES,并在第二行输出所需要支付的贿金最小值。否则输出NO,并在第二行输出不能控制的间谍中,编号最小的间谍编号。
【样例1】
3
2
1 10
2 100
2
1 3
2 3
【样例2】
4
2
1 100
4 200
2
1 2
3 4
【样例1】
YES
110
【样例2】
NO<a name="_GoBack"></a>
3
各个测试点1s
友情提示:请先膜拜下万能的YJY再做呦^_^
tarjan缩点
入度为0的是一定可以被控制的
这么写居然不会编译错误。。害得我找了好久
instack[x]-true;
屠龙宝刀点击就送
#include <cstring> #include <cstdio> #include <vector> #include <queue> #define N 6005using namespace std; vector<int>G[N]; bool f,instack[N]; int n,p,r,cnt,tim,top,sumcol,mn[N],mm[N],rd[N],to[N<<1],col[N],sum[N],mc[N],low[N],dfn[N],stack[N],head[N],nextt[N<<1]; inline int min(int a,int b) {return a>b?b:a;} void tarjan(int x) {low[x]=dfn[x]=++tim;stack[++top]=x;instack[x]=true;for(int i=head[x];i;i=nextt[i]){int v=to[i];if(!dfn[v]){tarjan(v);low[x]=min(low[x],low[v]);}else if(instack[v]) low[x]=min(low[x],dfn[v]);}if(low[x]==dfn[x]){int k;sumcol++;do{k=stack[top--];instack[k]=false;col[k]=sumcol;if(mn[k]) mc[sumcol]=min(mc[sumcol],mn[k]);mm[sumcol]=min(mm[sumcol],k);}while(k!=x);} } int main(int argc,char *argv[]) {scanf("%d",&n);scanf("%d",&p);for(int num,mnn,i=1;i<=p;++i){scanf("%d%d",&num,&mnn);mn[num]=mnn;}memset(mc,0x3f,sizeof(mc));memset(mm,0x3f,sizeof(mm));scanf("%d",&r);for(int a,b;r--;){scanf("%d%d",&a,&b);nextt[++cnt]=head[a];to[cnt]=b;head[a]=cnt;}for(int i=1;i<=n;++i) if(!dfn[i]) tarjan(i);for(int i=1;i<=n;++i){for(int j=head[i];j;j=nextt[j]){int v=to[j];if(col[i]!=col[v]){for(int k=0;k<G[col[i]].size();++k)if(G[col[i]][k]==col[v]) goto flag;G[col[i]].push_back(col[v]); rd[col[v]]++;flag:;}}}int ans=0,ansn=0x7fffffff;for(int i=1;i<=sumcol;++i){if(!rd[i]){if(mc[i]==1061109567){f=1;ansn=min(ansn,mm[i]);}else ans+=mc[i];}}if(f) printf("NO\n%d",ansn);else printf("YES\n%d\n",ans);return 0; }
转载于:https://www.cnblogs.com/ruojisun/p/7679121.html
codevs 4093 EZ的间谍网络相关推荐
- EZ的间谍网络(codevs 4093)
由于外国间谍的大量渗入,学校安全正处于高度的危机之中.YJY决定挺身而作出反抗.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手 ...
- 缩点【洛谷P1262】 间谍网络
[洛谷P1262] 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他 ...
- P1262 间谍网络
传送门 思路: ①在 Tarjan 的基础上加一个 belong 记录每个点属于哪个强连通分量. ②存图完成后,暴力地遍历全图,查找是否要间谍不愿受贿. inline void dfs(int u) ...
- 洛谷P1262 间谍网络题解
洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...
- Luogu P1262 间谍网络 【强连通分量/缩点】By cellur925
题目传送门 真是一道好题呀~~~~qwq 知道这题是tarjan,但是想了很久怎么用上强连通分量.因为样例们...它显然并不是一个强联通分量! (被样例迷惑的最好例子) 然后...就没有然后了...感 ...
- loj10095 间谍网络
题目描述 由于外国间谍的大量渗入,国家安全正处于高度危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报. ...
- P1262_美帝的间谍网络被我部捕获!
题面 这道题太神了吧,从昨晚七点半做到今天下午两点. 我经历了以下折腾(以下内容可跳过): 一开始想的是用Tarjan缩点,然后以可以被收买的间谍为起点跑最短路,通过路径染色,让一条路径上的点的权值等 ...
- P1262 间谍网络 (tarjan缩点 水过去)
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...
- 洛谷1262 间谍网络 tarjan缩点
题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...
- Tyvj P1153 间谍网络
代码来自dxh,注释来自lex 1 program ty1153; 2 var 3 inv,cost,nv,v,f,stk,dfn,low,min,sml:array[1..3000]of longi ...
最新文章
- OpenCV实现遍历文件夹下所有文件
- 游戏开发基础:A*算法(转)
- 你的代码糟粕比精华要多得多
- c语言ut8,C语言使用utlist实现的双向链表
- String内存分配
- 保驾护航金三银四,万字解析!
- Liferay 部署war包时候的deployDirectory 细节分析
- synchronized关键字理解
- EOS1.1版本新特性介绍
- mysqldump对mysql数据库的影响
- 百面机器学习——svm基尼系数寻找最优划分
- 一秒钟世界上会发生多少事_再多涂改,人性也总会醒来,也总会主动去追寻那一秒钟...
- 表单html遇到的问题及处理,HTML表单常见问题
- 深度学习神经网络训练调参技巧
- 普适计算-2014/03/14
- 10秒钟解决TeamViewer商业用途 、5分钟后终止等问题
- 这绝对是个高手,一个用 C 开发的图形界面开发库
- Exiftool not found metadata operations disabled 索尼相机查如何查快门教程
- 【初创期】企业的安全建设之路到底有多难?
- 乐普生物通过聆讯:预计年亏10亿 海通证券与阳光人寿是股东
热门文章
- 鹏业安装算量图元属性中的扣除标记功能
- word排版学习笔记
- 柱状图误差线 matlab,matlab柱状图加误差线
- labwindows mysql_LabWindows/CVI(二):基本代码框架函数说明
- 【OpenGL】斯坦福兔子、显示列表
- android 飞行模式 源代码,android 定时进入飞行模式 例子
- win+ubuntu双系统卸载ubuntu
- 微信支付/支付宝指纹支付原理
- MediaRecorder单独录制影像,不录制音频
- 网络虚拟化中的 offload 技术:LSO/LRO、GSO/GRO、TSO/UFO、VXLAN