洛谷 P2712 攝像頭

2022-06-02 00:00:17 字數 1340 閱讀 5155

食品店裡有n個攝像頭,這種攝像頭很笨拙,只能拍攝到固定位置。現有一群膽大妄為的松鼠想要搶劫食品店,為了不讓攝像頭拍下他們犯罪的證據,他們搶劫前的第一件事就是砸毀這些攝像頭。

為了便於砸毀攝像頭,松鼠歹徒們把所有攝像頭和攝像頭能監視到的地方統一編號,乙個攝像頭能被砸毀的條件是該攝像頭所在位置不被其他攝像頭監視。

現在你的任務是幫松鼠們計算是否可以砸掉所有攝像頭,如不能則輸出還沒砸掉的攝像頭的數量。

輸入格式:

第1行,乙個整數n,表示攝像頭的個數。

第2到n+1行是攝像頭的資訊,包括:攝像頭的位置x,以及這個攝像頭可以監視到的位置數m,之後m個數y是此攝像頭可以監視到的位置。(砸了這些攝像頭之後自然這些位置就監視不到了)

輸出格式:

若可以砸掉所有攝像頭則輸出「yes」,否則輸出還沒砸掉的攝像頭的數量。

輸入樣例#1:

5

1 1 2

2 1 1

3 1 7

4 1 1

5 0

輸出樣例#1:

2

這題可以說是2015noipd1t2資訊傳遞的簡化版,這題只用按拓撲排序依次把入度為0的點刪掉,再統計沒被刪的有多少就行了,資訊傳遞那題還要統計剩下的點中的最小環。還有乙個不同是這題要把攝像機編號和位置用map離散化一下。大概思路就是這樣,詳細步驟在**注釋裡

#include#include

#include

using

namespace

std;

int n;//

攝像頭總數

map ma;//

離散化位置到編號(ca中下標)

struct

cameratemp;//

temp是方便輸入的臨時變數

vectorca;//

吐槽題目不給資料範圍

void del(int x)//

x是攝像機編號,即在ca中的下標 } }

}int

main()

ca.push_back(temp);

}for(int i=0;i//

遍歷ca每一台攝像機,增加它們兒子的入度

}for(int i=0;i)

}int ans=0

;

for(int i=0;i//

統計有多少攝像機還沒被砸

if(ans==0) printf("

yes");//

全砸了,搶劫成功

else printf("

%d",ans);//

砸不完,輸出剩下的攝像機數量

return0;

}

洛谷 P2712 攝像頭

食品店裡有n個攝像頭,這種攝像頭很笨拙,只能拍攝到固定位置。現有一群膽大妄為的松鼠想要搶劫食品店,為了不讓攝像頭拍下他們犯罪的證據,他們搶劫前的第一件事就是砸毀這些攝像頭。為了便於砸毀攝像頭,松鼠歹徒們把所有攝像頭和攝像頭能監視到的地方統一編號,乙個攝像頭能被砸毀的條件是該攝像頭所在位置不被其他攝像...

洛谷 P2712 攝像頭 題解

題目大意 有一些攝像頭,監視著一些位置,每個攝像頭有自己的位置,如果這個攝像頭的位置被其他攝像頭監視著,那麼它就不能被拆除,拆除乙個攝像頭之後就不能監視它原來監視的位置,問可否拆完全部攝像頭。這道題做法很多,這裡提供兩種做法,一種是普遍使用的做法,一種是我自己的做法 我的做法。可能比較煩,但思路類似...

自己動手研發P2P功能的IPC攝像頭

純工程師一名,歷經一段時間的摸索,搞定了基於海思3518e方案的ipc攝像頭,研發攝像頭需要掌握的知識點還挺多的,沒法通過三言兩語講述清楚.先上圖,最後完成的作品如下 研發一款攝像頭需要掌握的基本流程與知識點 1 搭建linux 嵌入式虛擬機器,arm交叉編譯環境,如下圖是我搭建的ubuntu的編譯...