代码来自dxh,注释来自lex
1 program ty1153;
2 var
3 inv,cost,nv,v,f,stk,dfn,low,min,sml:array[1..3000]of longint;
4 g,ng:array[1..3000,1..3000]of longint;
5 map:array[1..3000,1..3000]of boolean;
6 vh,vis:array[1..3000]of boolean;{vh:入栈标志,vis:访问标志}
7 i,j,k,n,m,top,time,pts,oo,ans1,ans2:longint;
8 procedure add(a,b:longint);
9 begin
10 inc(v[a]);
11 g[a,v[a]]:=b;
12 end;
13 procedure nadd(a,b:longint); {统计新图各点的出度和入度,并为新图加边}
14 begin
15 if map[a,b] then exit;
16 inc(nv[a]); {增加a入度}
17 inc(inv[b]); {增加b出度}
18 ng[a,nv[a]]:=b; {将边加入新图}
19 map[a,b]:=true;
20 end;
21 procedure push(p:longint);
22 begin
23 inc(top);
24 stk[top]:=p;
25 vh[p]:=true;
26 end;
27 function pop:longint;
28 begin
29 pop:=stk[top];
30 vh[stk[top]]:=false;
31 dec(top);
32 end;
33 procedure dfs(p:longint);
34 var
35 i,k:longint;
36 begin
37 inc(time);
38 dfn[p]:=time;
39 low[p]:=dfn[p];
40 vis[p]:=true;
41 push(p);
42 for i:=1 to v[p] do
43 if not vis[g[p,i]] then
44 begin
45 dfs(g[p,i]);
46 if low[g[p,i]]<low[p] then
47 low[p]:=low[g[p,i]]
48 end
49 else
50 if vh[g[p,i]] then
51 if low[g[p,i]]<low[p] then
52 low[p]:=low[g[p,i]];
53 if low[p]=dfn[p] then
54 begin
55 k:=0;
56 inc(pts);
57 while k<>p do
58 begin
59 k:=pop;
60 f[k]:=pts;
61 end;
62 end;
63 end;
64 procedure merge(p:longint);
65 var
66 i:longint;
67 begin
68 if cost[p]<min[f[p]] then min[f[p]]:=cost[p]; {该点的最小代价}
69 if p<sml[f[p]] then sml[f[p]]:=p; {sml是为了解决不能控制的间谍的最小编号}
70 for i:=1 to v[p] do {缩点建边}
71 nadd(f[p],f[g[p,i]]);
72 end;
73 begin
74 readln(n);
75 readln(m);
76 fillchar(cost,sizeof(cost),$6f);
77 fillchar(min,sizeof(min),$6f);
78 for i:=1 to m do
79 begin
80 readln(j,k);
81 cost[j]:=k;
82 end;
83 readln(m);
84 for i:=1 to m do
85 begin
86 readln(j,k);
87 add(j,k);
88 end;
89 fillchar(vh,sizeof(vh),false);
90 fillchar(vis,sizeof(vis),false);
91 time:=0;
92 pts:=0;
93 for i:=1 to n do
94 if not vis[i] then
95 dfs(i);
96 for i:=1 to pts do map[i,i]:=true; {此分量与自身有路,作用见第15行}
97 fillchar(sml,sizeof(sml),$6f);
98 for i:=1 to n do merge(i);
99 fillchar(oo,sizeof(oo),$6f);
100 ans2:=oo;
101 ans1:=0;
102 for i:=1 to pts do
103 if inv[i]=0 then
104 begin
105 if min[i]<>oo then {若该点入度为零,且有间谍可收买,则加钱}
106 ans1:=ans1+min[i]
107 else
108 if sml[i]<ans2 then   {若该点无间谍可收买,此分量间谍不可控,更新编号最小之不可控间谍}
109 ans2:=sml[i];
110 end;
111 if ans2=oo then
112 begin
113 writeln('YES');
114 writeln(ans1);
115 end
116 else
117 begin
118 writeln('NO');
119 writeln(ans2);
120 end;
121 end.

转载于:https://www.cnblogs.com/lexluthor/articles/1980197.html

Tyvj P1153 间谍网络相关推荐

  1. 缩点【洛谷P1262】 间谍网络

    [洛谷P1262] 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他 ...

  2. P1262 间谍网络

    传送门 思路: ①在 Tarjan 的基础上加一个 belong 记录每个点属于哪个强连通分量. ②存图完成后,暴力地遍历全图,查找是否要间谍不愿受贿. inline void dfs(int u) ...

  3. 洛谷P1262 间谍网络题解

    洛谷P1262 间谍网络题解 题目大意 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果 A 间谍手中掌握着关于 B 间谍的犯罪证据,则称 A 可以揭发 B.有些间谍收受贿赂,只要 ...

  4. tyvj间谍网络(强连通分量)题解

    题目描述见下列网址 http://www.tyvj.cn/  (P1153) 经过对题目的分析,可以得出,题目的要求就是求出图中的强连通分量连,然后进行缩点操作,最后枚举每一个入度为0的点,如果可以有 ...

  5. Luogu P1262 间谍网络 【强连通分量/缩点】By cellur925

    题目传送门 真是一道好题呀~~~~qwq 知道这题是tarjan,但是想了很久怎么用上强连通分量.因为样例们...它显然并不是一个强联通分量! (被样例迷惑的最好例子) 然后...就没有然后了...感 ...

  6. loj10095 间谍网络

    题目描述 由于外国间谍的大量渗入,国家安全正处于高度危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍接受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报. ...

  7. P1262_美帝的间谍网络被我部捕获!

    题面 这道题太神了吧,从昨晚七点半做到今天下午两点. 我经历了以下折腾(以下内容可跳过): 一开始想的是用Tarjan缩点,然后以可以被收买的间谍为起点跑最短路,通过路径染色,让一条路径上的点的权值等 ...

  8. EZ的间谍网络(codevs 4093)

    由于外国间谍的大量渗入,学校安全正处于高度的危机之中.YJY决定挺身而作出反抗.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手 ...

  9. P1262 间谍网络 (tarjan缩点 水过去)

    题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意交出手中掌握的全部情报 ...

最新文章

  1. Docker compose 容器编排
  2. CSV合规的矫枉过正
  3. Linux查看版本当前操作系统内核信息
  4. 2018 CVPR GAN 相关论文调研
  5. codelite在 ubuntu6.04下开启C++11支持
  6. Mac下和Windows下UnrealEngine 4体验对比
  7. android 评分条 RatingBar 使用及自定义
  8. 数据库学习笔记---connect by的简单用法
  9. 寻找优秀的AI公司与受人尊敬的资本助推者 | 量子位年度评选进行时
  10. Python下json中文乱码解决办法
  11. Spark—local模式环境搭建
  12. java 四边形_java求教,编写一个四边形的类与子类
  13. 全球智慧能源解决方案服务商「雄韬股份」牵手企企通,谱写采购数字化变革之路
  14. python print字体颜色 print背景颜色
  15. iOS 火星坐标相关整理及解决方案汇总
  16. 基于直方图的图像增强算法(HE、CLAHE)之(二)
  17. 缺失MSVCR120.dll文件
  18. 什么是“ Gacha”视频游戏?
  19. 关于Duilib的扩展——“拖放”实现(二)
  20. opencv 实现照片美颜功能 html5版(源码)

热门文章

  1. 卸载symantec AntiVirus Client客户端,要求输入密码。。。。
  2. 微信小程序的视图容器—swiper
  3. 删除内置不卡米教程_影视特效后期AE CC零基础入门到高级教程
  4. Python tkinter -- 第14章 列表框(Listbox)属性
  5. 浮栅场效应管 符号_电子元器件—场效应管
  6. WJMZBMR在成都赛区开幕式上的讲话
  7. 商用车车队管理系统FMS
  8. Swagger结合PostMan完成接口自动化测试
  9. gflags和glog在cartographer中的运用
  10. win7x64下实现进程保护