河南2014 省赛 世界之威
来源:互联网 发布:非嵌入式软件即征即退 编辑:程序博客网 时间:2024/04/30 04:16
10404: E.世界之威
Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 2 Solved: 1
[Submit][Status][Web Board]
Description
某帝国拥有着N种被称作“世界之威”的新型武器。现在为了国家的经济发展,它需要很多资金,为此,此帝国总统OBM准备把一些武器卖给其它国家。
此帝国总统OBM知道,这N种武器之间可能会相互受限制的。例如,第3种武器会打败第1种武器,第4种武器会打败第3种武器等等。他希望所有被卖出的武器中都至少有一种限制它的武器在他手中,目的是此帝国能制约住其它国家,这样就可以保持对世界的霸权地位。
但总统OBM头脑有点笨,他想知道他最多可以卖出多少种武器,你愿意帮助他吗?
(你可以告诉电脑,但不告诉他喽。)
Input
第一行: K 表示有多少组测试数据。
接下来对每组测试数据:
第1行: N 表示有多少种新型武器
第2~N+1行: A1 A2……AN 表示第i种武器能限制住第Ai种武器
1≤K≤10 0≤N≤106 1≤Ai≤N
Output
对于每组测试数据,输出占一行:最多可以卖出的武器种类数
Sample Input
172 3 1 3 6 5 4
Sample Output
3
<div class="line number1 index0 alt2"><code class="c preprocessor">#include <cstdio></code></div><div class="line number2 index1 alt1"><code class="c preprocessor">#include <iostream></code></div><div class="line number3 index2 alt2"><code class="c preprocessor">#include <algorithm></code></div><div class="line number4 index3 alt1"><code class="c preprocessor">#include <queue></code></div><div class="line number5 index4 alt2"><code class="c preprocessor">#include <stack></code></div><div class="line number6 index5 alt1"><code class="c preprocessor">#include <climits></code></div><div class="line number7 index6 alt2"><code class="c preprocessor">#include <cstring></code></div><div class="line number8 index7 alt1"><code class="c preprocessor">#include <cmath></code></div><div class="line number9 index8 alt2"><code class="c preprocessor">#include <map></code></div><div class="line number10 index9 alt1"><code class="c preprocessor">#include <set></code></div><div class="line number11 index10 alt2"><code class="c preprocessor">#define INF 100000000</code></div><div class="line number12 index11 alt1"><code class="c spaces"> </code> </div><div class="line number13 index12 alt2"><code class="c keyword bold">using</code> <code class="c keyword bold">namespace</code> <code class="c plain">std;</code></div><div class="line number14 index13 alt1"><code class="c spaces"> </code> </div><div class="line number15 index14 alt2"><code class="c color1 bold">int</code> <code class="c plain">a[1000005],d[1000005],vis[1000005];</code></div><div class="line number16 index15 alt1"><code class="c spaces"> </code> </div><div class="line number17 index16 alt2"><code class="c spaces"> </code> </div><div class="line number18 index17 alt1"><code class="c spaces"> </code> </div><div class="line number19 index18 alt2"><code class="c color1 bold">int</code> <code class="c plain">main(){</code></div><div class="line number20 index19 alt1"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c plain">t;</code></div><div class="line number21 index20 alt2"><code class="c spaces"> </code><code class="c plain">cin >> t;</code></div><div class="line number22 index21 alt1"><code class="c spaces"> </code><code class="c keyword bold">while</code><code class="c plain">(t --){</code></div><div class="line number23 index22 alt2"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c plain">n;</code></div><div class="line number24 index23 alt1"><code class="c spaces"> </code><code class="c functions bold">scanf</code><code class="c plain">(</code><code class="c string">"%d"</code><code class="c plain">,&n);</code></div><div class="line number25 index24 alt2"><code class="c spaces"> </code><code class="c plain">priority_queue<</code><code class="c color1 bold">int</code><code class="c plain">,vector<</code><code class="c color1 bold">int</code><code class="c plain">>,greater<</code><code class="c color1 bold">int</code><code class="c plain">> > que;</code></div><div class="line number26 index25 alt1"><code class="c spaces"> </code><code class="c functions bold">memset</code><code class="c plain">(d,0,</code><code class="c keyword bold">sizeof</code><code class="c plain">(d));</code></div><div class="line number27 index26 alt2"><code class="c spaces"> </code><code class="c functions bold">memset</code><code class="c plain">(vis,0,</code><code class="c keyword bold">sizeof</code><code class="c plain">(vis));</code></div><div class="line number28 index27 alt1"><code class="c spaces"> </code> </div><div class="line number29 index28 alt2"><code class="c spaces"> </code><code class="c keyword bold">for</code><code class="c plain">(</code><code class="c color1 bold">int</code> <code class="c plain">i = 1;i <= n;i++){</code></div><div class="line number30 index29 alt1"><code class="c spaces"> </code><code class="c functions bold">scanf</code><code class="c plain">(</code><code class="c string">"%d"</code><code class="c plain">,&a[i]);</code></div><div class="line number31 index30 alt2"><code class="c spaces"> </code><code class="c plain">d[a[i]] ++;</code></div><div class="line number32 index31 alt1"><code class="c spaces"> </code><code class="c plain">} </code></div><div class="line number33 index32 alt2"><code class="c spaces"> </code> </div><div class="line number34 index33 alt1"><code class="c spaces"> </code><code class="c keyword bold">for</code><code class="c plain">(</code><code class="c color1 bold">int</code> <code class="c plain">i = 1;i <= n;i++){</code></div><div class="line number35 index34 alt2"><code class="c spaces"> </code><code class="c keyword bold">if</code><code class="c plain">(d[i] == 0){</code></div><div class="line number36 index35 alt1"><code class="c spaces"> </code><code class="c plain">que.push(i); </code></div><div class="line number37 index36 alt2"><code class="c spaces"> </code><code class="c plain">}</code></div><div class="line number38 index37 alt1"><code class="c spaces"> </code><code class="c plain">}</code></div><div class="line number39 index38 alt2"><code class="c spaces"> </code> </div><div class="line number40 index39 alt1"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c plain">ans = 0;</code></div><div class="line number41 index40 alt2"><code class="c spaces"> </code> </div><div class="line number42 index41 alt1"><code class="c spaces"> </code><code class="c keyword bold">while</code><code class="c plain">(!que.empty()){</code></div><div class="line number43 index42 alt2"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c plain">p = que.top();</code><code class="c comments">//入度为零的 </code></div><div class="line number44 index43 alt1"><code class="c spaces"> </code><code class="c plain">que.pop();</code></div><div class="line number45 index44 alt2"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c color1 bold">tm</code> <code class="c plain">= 0;</code></div><div class="line number46 index45 alt1"><code class="c spaces"> </code><code class="c keyword bold">while</code><code class="c plain">(!vis[p]){</code></div><div class="line number47 index46 alt2"><code class="c spaces"> </code><code class="c plain">vis[p] = 1;</code></div><div class="line number48 index47 alt1"><code class="c spaces"> </code><code class="c plain">p = a[p];</code></div><div class="line number49 index48 alt2"><code class="c spaces"> </code><code class="c color1 bold">tm</code><code class="c plain">++;</code></div><div class="line number50 index49 alt1"><code class="c spaces"> </code><code class="c plain">}</code></div><div class="line number51 index50 alt2"><code class="c spaces"> </code><code class="c plain">ans += </code><code class="c color1 bold">tm</code><code class="c plain">/2; </code></div><div class="line number52 index51 alt1"><code class="c spaces"> </code><code class="c plain">}</code></div><div class="line number53 index52 alt2"><code class="c spaces"> </code> </div><div class="line number54 index53 alt1"><code class="c spaces"> </code><code class="c keyword bold">for</code><code class="c plain">(</code><code class="c color1 bold">int</code> <code class="c plain">i = 1;i <= n;i++){</code></div><div class="line number55 index54 alt2"><code class="c spaces"> </code><code class="c keyword bold">if</code><code class="c plain">(!vis[i]){</code></div><div class="line number56 index55 alt1"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c plain">p = i;</code></div><div class="line number57 index56 alt2"><code class="c spaces"> </code><code class="c color1 bold">int</code> <code class="c color1 bold">tm</code> <code class="c plain">= 0;</code></div><div class="line number58 index57 alt1"><code class="c spaces"> </code><code class="c keyword bold">while</code><code class="c plain">(!vis[p]){</code></div><div class="line number59 index58 alt2"><code class="c spaces"> </code><code class="c plain">vis[p] = 1;</code></div><div class="line number60 index59 alt1"><code class="c spaces"> </code><code class="c plain">p = a[p];</code></div><div class="line number61 index60 alt2"><code class="c spaces"> </code><code class="c color1 bold">tm</code><code class="c plain">++;</code></div><div class="line number62 index61 alt1"><code class="c spaces"> </code><code class="c plain">} </code></div><div class="line number63 index62 alt2"><code class="c spaces"> </code><code class="c plain">ans += </code><code class="c color1 bold">tm</code><code class="c plain">/2;</code></div><div class="line number64 index63 alt1"><code class="c spaces"> </code><code class="c plain">} </code></div><div class="line number65 index64 alt2"><code class="c spaces"> </code><code class="c plain">} </code></div><div class="line number66 index65 alt1"><code class="c spaces"> </code><code class="c functions bold">printf</code><code class="c plain">(</code><code class="c string">"%d\n"</code><code class="c plain">,ans);</code></div><div class="line number67 index66 alt2"><code class="c spaces"> </code><code class="c plain">} </code></div><div class="line number68 index67 alt1"><code class="c spaces"> </code><code class="c keyword bold">return</code> <code class="c plain">0;</code></div><div class="line number69 index68 alt2"><code class="c plain">}</code></div>
0 0
- 河南2014 省赛 世界之威
- 河南2014 省赛 山间修路 dp
- 河南农大之家
- 河南
- 河南
- 河南IT人物之 李少杰
- NYOJ-1252-世界之威
- 2015河南ACM省赛 - 小记
- 河南第三届ACM省赛(素数)
- 河南第四届ACM省赛(BOBSLEDDING)
- 河南第十届ACM省赛-E-八纵八横
- 河南第十届ACM省赛-D-年终奖金
- 记于2014国庆节,蓝欧河南.
- 河南理工大学2014ACM初选试题
- 河南新乡:从“诗经之乡”到“云之乡”
- 河南名吃之胡辣汤和豆沫的做法
- 河南之行——感言(二)
- 世界之最
- struts2 OGNL ValueStack概念理解 # % $ 的区别
- IOS7之后的导航栏遮盖问题
- C++队列数组实现
- IO、关键字与异常系统总结
- TRANSFORM_TEX
- 河南2014 省赛 世界之威
- [Android个人理解(六)]使用include标签的注意事项
- android在eclipse下的环境搭建
- 链表的实际应用1
- Ubuntu 14.04中挂载其它NFS服务器的文件系统
- HDU 1711 KMP模板
- Oracle —— 几种分页方式
- VC/MFC得到电脑的默认打印机、设置默认打印机、遍历电脑打印机
- 报名管理系统思想总结