控制公司(codevs 2051)

2022-05-14 16:53:39 字數 1300 閱讀 4824

題目描述 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個公司。

寫乙個程式讀入n組數(i,j,p),i,j和p是都在範圍(1..100)的正整數,並且找出所有的數對(h,s),使得公司h控制公司s。

輸入描述 input description

第一行: n,表明接下來三個數的數量,即(i,j,p)的數量。

第二行到第n+1行: 每行三個整數作為乙個三對數(i,j,p),表示i公司擁有j公司 p%的股份。

輸出描述 output description

輸出零個或更多個的控制其他公司的公司。每行包括兩個整數a、b,表示a公司控制了b公司。將輸出的數對以公升序排列。

請不要輸出控制自己的公司(應該是不輸出自己,互相控制的公司還是要輸出的)。

樣例輸入 sample input

3

1 2 80

2 3 80

3 1 20

樣例輸出 sample output

1 2

1 32 3

/*

一道稍有難度的模擬題,難點在於如何多次處理公司之間的關係,剛開始用dfs寫了一遍,但他不能處理類似於環的情況,即a可以控制b,b也可以控制a,然後又寫了一遍bfs,可過。

*/#include

#include

#define m 110

using

namespace

std;

int a[m][m],q1[m*m],q2[m*m],head,tail,n,m;

intmain()

}while(head<=tail)}}

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

if(a[i][j]>50

) printf(

"%d %d\n

",i,j);

return0;

}

view code

P1475 控制公司

這是一道比較易懂的dfs 遞迴 題 雖然我一開始只得了22分 22分 如下 include include using namespace std int a 105 105 int x,y,z,n intsum intmain for int i 1 i sum i for int j 1 j s...

傳染病控制(codevs 1091)

題目描述 description 問題背景 近來,一種新的傳染病肆虐全球。蓬萊國也發現了零星感染者,為防止該病在蓬萊國 大範圍流行,該國 決定不惜一切代價控制傳染病的蔓延。不幸的是,由於人們尚未完 全認識這種傳染病,難以準確判別病毒攜帶者,更沒有研製出疫苗以保護易感人群。於是,蓬萊國的疾病控制中心決...

諮詢公司應注意成本控制

上個月看到 21世紀經濟報道 的一則文章 神州數碼轉型it服務遇挫財報難產風波或將重演 當時本來想正式寫點東西,但由於忙工作中的一些雜事情,所以耽誤了。心裡總覺得欠著點什麼,今天抽點時間簡單說兩句。諮詢公司的利潤主要 於兩方面,軟硬體分銷和專案 諮詢 開發和公升級等 利潤的大小主要由簽單的數量和規模...