計蒜客 商業資訊共享

2022-05-01 09:54:10 字數 1567 閱讀 8968

有 n個公司,從每個公司都能單向地向另外乙個公司分享最新商業資訊,因為他們之間有著某種合作,你需要解決兩個問題:

現在有乙個最新的商業資訊,至少需要告訴多少個公司,使得所有的公司最終都能得到該資訊。

在原有基礎上,至少需要再讓多少對公司建立這種合作,使任意乙個公司獲得某個最新商業資訊後,經過若干次分享,所有的公司最終都能得到該資訊。

第一行輸入乙個整數 n(1≤n≤100)。

接下來 n行,每行若干個整數,表示第 ii 個公司可以向哪些公司分享資訊,以 0 結束。

輸出共兩行,每行乙個整數,分別表示問題 1 和問題 2 的答案。

樣例輸入

6

06 0

2 02 0

3 1 0

0

樣例輸出

2

2分析:先縮點,第一小問就是求有多少點的入度為0,第二小問怎麼求呢?

顯然要加邊使原圖變成乙個強聯通分量,一定要讓圖中的所有點的出度和入度都為0,每次我們可以連一條邊從出度為0的到入度為0的,但是可能出度入度為0的點數量不相等,取個max就好了.

#include #include 

#include

#include

#include

#include

using

namespace

std;

int n, ru[110], chu[110], head[110], nextt[10000], to[10000], tot = 1, scc[110], num, dfs_clock, pre[110], low[110],map[110][110

];int ru1[110], chu1[110

];stack

s;void add(int x, int

y)void tarjan(int

u)

else

if (!scc[v])

low[u] =min(low[u], pre[v]);

}if (low[u] ==pre[u])

}}void lianbian(int

x) }

}int

main()

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

if (!scc[i])

tarjan(i);

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

lianbian(i);

int ans = 0,rucnt = 0,chucnt = 0

;

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

printf(

"%d\n

", ans);

//printf("%d\n", num);

int cr = 0, cc = 0

;

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

printf("%d

", max(cc, cr));

return0;

}

成為Google商業資訊推薦專員 賺取美元

所謂的商業資訊推薦專員,主要的職責就是負責幫助google收集商家的相關資訊,比如營業時間 所接受的付款方式 店面相片等等。當商業資訊推薦專員收集了資訊,推薦給google後,將有機會獲得報酬。如果資訊被google核實並通過,那麼商業資訊推薦專員將獲得2美元 如果資訊被有關的商家核實並通過,那核實...

計蒜客 商湯科技的行人檢測(困難) 概率 幾何

分類 mathprobability 計蒜客 商湯科技的行人檢測 困難 在這道題中,我們將行人的移動過程抽象為 旋轉 伸縮 平移,有 4 個 移動引數 scal e,dx dy 每次行人的移動過程會將行人對應的 nn 個點全部依次應用旋轉 伸縮 平移,對於平移前的點 x,y x,y 進行每種操作後的...

計蒜客 商湯科技的行人檢測(隨機化 計算幾何)

題目鏈結 簡單中等 困難簡單版本 直接統計答案,數目到達一半即可。include using namespace std define rep i,a,b for int i a i b i define dec i,a,b for int i a i b i int n int a,b,c,d p...