USACO 2.3 控制公司 (DFS)
2016-11-24 21:02
429 查看
Description
有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分。例如,福特公司拥有马自达公司12%的股票。据说,如果至少满足了以下条件之一,公司A就可以控制公司B了:
• 公司A = 公司B。
• 公司A拥有大于50%的公司B的股票。
• 公司A控制K(K >= 1)个公司,记为C1, …, CK,每个公司Ci拥有xi%的公司B的股票,并且x1+ …. + xK > 50%。
你将被给予一系列的三对数(i,j,p),表明公司i享有公司j的p%的股票。计算所有的数对(h,s),表明公司h控制公司s。至多有100个公司。
写一个程序读入三对数(i,j,p),i,j和p是都在范围(1..100)的正整数,并且找出所有的数对(h,s),使得公司h控制公司s。
Input
第一行: N,表明接下来三对数的数量。
第二行到第N+1行: 每行三个整数作为一个三对数(i,j,p),如上文所述。
Output
输出零个或更多个的控制其他公司的公司。每行包括两个整数表明序号为第一个整数的公司控制了序号为第二个整数的公司。将输出的每行以第一个数字升序排列(并且第二个数字也升序排列来避免并列)。请不要输出控制自己的公司。
Sample Input
3
1 2 80
2 3 80
3 1 20
Sample Output
1 2
1 3
2 3
有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分。例如,福特公司拥有马自达公司12%的股票。据说,如果至少满足了以下条件之一,公司A就可以控制公司B了:
• 公司A = 公司B。
• 公司A拥有大于50%的公司B的股票。
• 公司A控制K(K >= 1)个公司,记为C1, …, CK,每个公司Ci拥有xi%的公司B的股票,并且x1+ …. + xK > 50%。
你将被给予一系列的三对数(i,j,p),表明公司i享有公司j的p%的股票。计算所有的数对(h,s),表明公司h控制公司s。至多有100个公司。
写一个程序读入三对数(i,j,p),i,j和p是都在范围(1..100)的正整数,并且找出所有的数对(h,s),使得公司h控制公司s。
Input
第一行: N,表明接下来三对数的数量。
第二行到第N+1行: 每行三个整数作为一个三对数(i,j,p),如上文所述。
Output
输出零个或更多个的控制其他公司的公司。每行包括两个整数表明序号为第一个整数的公司控制了序号为第二个整数的公司。将输出的每行以第一个数字升序排列(并且第二个数字也升序排列来避免并列)。请不要输出控制自己的公司。
Sample Input
3
1 2 80
2 3 80
3 1 20
Sample Output
1 2
1 3
2 3
题解:
题目已经提示你方法了······
代码:
var i,j,n,x,y:longint; f:array[1..100] of longint; a,s:array[1..100,0..100] of longint; bz:array[1..100] of boolean; procedure dfs(k:longint); var i:longint; begin for i:=1 to a[k,0] do f[a[k,i]]:=f[a[k,i]]+s[k,a[k,i]]; for i:=1 to a[k,0] do if (f[a[k,i]]>50) and bz[a[k,i]] then begin bz[a[k,i]]:=false; dfs(a[k,i]); bz[a[k,i]]:=true; end; end; begin readln(n); for i:=1 to n do begin readln(x,y,s[x,y]); inc(a[x,0]); a[x,a[x,0]]:=y; end; fillchar(bz,sizeof(bz),1); for i:=1 to 100 do begin fillchar(f,sizeof(f),0); bz[i]:=false; dfs(i); bz[i]:=true; for j:=1 to 100 do if (f[j]>50) and (i<>j) then writeln(i,' ',j); end; end.
相关文章推荐
- [USACO2.3]控制公司 Controlling Companies
- [USACO2.3]控制公司 Controlling Companies
- usaco 2.3.5控制公司
- 竞赛于 2016-4-19 T1,公司控制(usaco 原题)
- USACO 2.3 Controlling Companies(DFS)
- Usaco 2.3 Zero Sums(回溯DFS)--暴搜
- USACO section 2.3 Controlling Companies(dfs)
- 【USACO2.3.5】控制公司 BFS
- USACO section 2.3 Controlling Companies(dfs)
- 【USACO 2.3.5】控制公司
- USACO 2.3 和为零 (DFS)
- 【USACO 2.3】Zero Sum(dfs)
- USACO 2.3 Zero Sum(DFS)
- USACO 2.3 Controlling Companies (DFS)
- [树Dfs][Usaco2010 Mar]gather奶牛大集会
- BZOJ 1782: [Usaco2010 Feb]slowdown 慢慢游( BIT + dfs )
- USACO 1.4 Mother's Milk (枚举 + DFS)
- bzoj 1574: [Usaco2009 Jan]地震损坏Damage【dfs】
- USACO 1.5 Checker Challenge (DFS + 剪枝)
- bzoj 1653: [Usaco2006 Feb]Backward Digit Sums【dfs】