luogu1262 间谍网络
贿赂所有能贿赂的,如果还有人不被访问则显然是NO。
否则,必定为YES。强联通分量缩成一个DAG,若某点的入度为零,则答案要算上它的。
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
struct Edge{
int fro, too, nxt;
}edge[8005];
int n, p, uu, vv, scc, w[3005], cnt, hea[3005], dfn[3005], loo[3005], ind, sta[3005], din, r, ans;
int minn[3005], bel[3005], dge[3005];
bool ins[3005];
void add_edge(int fro, int too){
edge[++cnt].nxt = hea[fro];
edge[cnt].fro = fro;
edge[cnt].too = too;
hea[fro] = cnt;
}
void dfs(int u){
ins[u] = true;
for(int i=hea[u]; i; i=edge[i].nxt){
int t=edge[i].too;
if(!ins[t]) dfs(t);
}
}
void tarjan(int u){
sta[++din] = u;
ins[u] = true;
dfn[u] = loo[u] = ++ind;
for(int i=hea[u]; i; i=edge[i].nxt){
int t=edge[i].too;
if(!dfn[t]){
tarjan(t);
loo[u] = min(loo[u], loo[t]);
}
else if(ins[t]) loo[u] = min(loo[u], dfn[t]);
}
int j;
if(dfn[u]==loo[u]){
scc++;
do{
j = sta[din--];
bel[j] = scc;
ins[j] = false;
minn[scc] = min(minn[scc], w[j]);
}while(dfn[j]!=dfn[u]);
}
}
int main(){
cin>>n>>p;
memset(w, 0x3f, sizeof(w));
memset(minn, 0x3f, sizeof(minn));
for(int i=1; i<=p; i++) scanf("%d", &uu), scanf("%d", &w[uu]);
cin>>r;
for(int i=1; i<=r; i++){
scanf("%d %d", &uu, &vv);
add_edge(uu, vv);
}
for(int i=1; i<=n; i++)
if(w[i]!=0x3f3f3f3f && !ins[i])
dfs(i);
for(int i=1; i<=n; i++)
if(!ins[i]){
cout<<"NO\n"<<i;
return 0;
}
memset(ins, 0, sizeof(ins));
for(int i=1; i<=n; i++)
if(!dfn[i])
tarjan(i);
for(int i=1; i<=cnt; i++)
if(bel[edge[i].fro]!=bel[edge[i].too])
dge[bel[edge[i].too]]++;
for(int i=1; i<=scc; i++){
if(!dge[i])
ans += minn[i];
}
cout<<"YES\n"<<ans;
return 0;
}
luogu1262 间谍网络的更多相关文章
- tyvj 1153 间谍网络 tarjan有向图强连通
P1153 - 间谍网络 From ForeverBell Normal (OI)总时限:13s 内存限制:128MB 代码长度限制:64KB 描述 Description 由于外国 ...
- Luogu P2002 消息扩散&&P1262 间谍网络
怕自己太久没写Tarjan了就会把这种神仙算法忘掉. 其实这种类型的图论题的套路还是比较简单且显然的. P2002 消息扩散 很显然的题目,因为在一个环(其实就是强连通分量)中的城市都只需要让其中一个 ...
- P1262 间谍网络
传送门 思路: ①在 Tarjan 的基础上加一个 belong 记录每个点属于哪个强连通分量. ②存图完成后,暴力地遍历全图,查找是否要间谍不愿受贿. inline void dfs(int u) ...
- 缩点【洛谷P1262】 间谍网络
[洛谷P1262] 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他 ...
- 洛谷 P1262 间谍网络==Codevs 4093 EZ的间谍网络
4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B ...
- 洛谷——P1262 间谍网络
P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ...
- TYVJ P1153 间谍网络
P1153 间谍网络 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 由于外国间谍的大量渗入,国家安全正处于高度危机之中.如果A间谍手中掌握着关于B间谍的犯罪 ...
- 洛谷 P1262 【间谍网络】
题库 : 洛谷 题号 : 1262 题目 : 间谍网络 link : https://www.luogu.org/problemnew/show/P1262 思路 : 这题可以用缩点的思想来做.先用T ...
- 【JZOJ 3910】Idiot 的间谍网络
题面: Description 作为一名高级特工,Idiot 苦心经营多年,终于在敌国建立起一张共有n 名特工的庞大间谍网络. 当然,出于保密性的要求,间谍网络中的每名特工最多只会有一名直接领导.现在 ...
随机推荐
- div嵌套时,子元素设置margin-top失效问题
这是因为父元素的padding设置为0时所产生的bug,它自动将margin-top提升到了父元素上,所以此时我们所设置的margin-top自动就到父元素上了,解决方案: 1.给父元素添加一个pad ...
- class类型重定义,防止头文件重复加载
今天调用自己写的一个类,出现了class类型重定义问题,上网查了相关资料,发现是头文件重复include引起的问题. 防止头文件重复加载: 系统那些头文件,无论怎么include都没事,因为一般都用了 ...
- python中的uuid4
Help on function uuid4 in module uuid: uuid4() Generate a random UUID.
- 【装载】删除Oracle11G
卸载Oracle步骤:1.停止所有与ORACLE相关的服务.2. 使用OUI(Oracle Universal Installer)卸载Oracle软件. “开始”->“程序”->“O ...
- JVM的内存划分
1.栈内存:栈内存主要是用来运行函数的,在函数中定义的所有变量,都会在这个内存开辟空间. 在栈内存中定义的变量,不初始化,是不能直接使用的. 注意:所有的函数都必须在栈内存中运行. 而jvm只会运行处 ...
- 前端面试题总结(二)CSS篇
前端面试题总结(二)CSS篇 一.link和@import的区别? link属于HTML标签,可以引入出css以外的事务,如RSS,而@import是css提供的,只能加载css文件. link会在页 ...
- 【胎教】做AI的基础,开始学习。
昨天,找了博导,他给我聊了一下暑假任务.现总结如下: 1. 周志华, 机器学习: 2. GoodFellow,深度学习: 3. 曾更生,*****医学图像处理: 4. cs231n,公式推导,课后习题 ...
- PAT (Basic Level) Practise (中文)- 1015. 德才论 (25)
http://www.patest.cn/contests/pat-b-practise/1015 宋代史学家司马光在<资治通鉴>中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡 ...
- javaweb基础(23)_jsp自定义标签
一.自定义标签的作用 自定义标签主要用于移除Jsp页面中的java代码. 二.自定义标签开发和使用 2.1.自定义标签开发步骤 1.编写一个实现Tag接口的Java类(标签处理器类) 1 packag ...
- ps基础入门快捷方法总结
1. 快速打开文件 双击Photoshop的背景空白处(默认为灰色显示区域)即可打开选择文件的浏览窗口. 2. 随意更换画布颜色 选择油漆桶工具并按住Shift点击画布边缘,即可设置画布底色为当前选择 ...