description
在乙個生態圈中,食物鏈的維繫是很重要的。食物鏈的斷裂往往引起連鎖反應,進而招致生態系統如同多公尺諾骨牌一樣坍塌。
現在考慮乙個簡化模型。在乙個生態系統中,有$n$種生物,它們分為兩類:生產者與消費者。生產者通過這個系統之外的能量來生存,最常見的是植物的光合作用。而消費者需要「消費」,也就是以其他生物為食物才可以生存。為了簡化問題,我們假設所有消費者是可以分層的,高一層的消費者可能的食物**都來自它的嚴格下層。生產者可以視為最下層的成員。當一種生物滅絕之後,依賴於它的消費者會由於所有食物消失而滅絕。 而這些消費者的滅絕可能進一步引起它的上層成員滅絕。我們定義指標$c(x)$,用於表示當x從生態系統中消失之後,隨它滅絕的生物數量。
給定乙個食物鏈模型,對所有生物,計算它的滅絕指標$c(x)$。
input
第一行乙個整數$n,表示生物的數量。生物從$1$開始編號。
接下來$n$行,第$i$行表示第$i$種生物的食物列表。兩種食物的編號以空格隔開,輸入$0$表示本行結束。如果這一行只有乙個$0$,這是乙個生產者,不能認為它沒有食物而天然滅絕。
output
共$n$行,第$i$行是第$i$個生物的滅絕指標$c(i)$。
sample input
5
01 0
1 02 3 0
2 0
sample output
4 1 0 0 0
hint
$n\;\leq\;65534$,輸入保證合法(即可以分層)。輸入檔案大小不超過$1mb$。
solution
顯然,整張食物網是$dag$.
利用$topo$序將圖分層.
乙個物種會滅亡當且僅當它的所有食物的公共祖先滅亡.
建樹,每個物種的所有食物的公共祖先向每個物種連一條邊,求子樹大小.
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#define k 17
#define n 65535
#define m 300000
using
namespace
std;
struct
graphe[n
<<1
],e1[m],e2[m];
struct
livesa[n];
intf[n][k],t[n],g[n],g1[n],g2[n],dep[n],siz[n],n,cnt,tot;
queue
q;inline
void adde1(int x,int
y)inline
void adde2(int x,int
y)inline
void addedge(int x,int
y)inline
bool
cmp(lives x,lives y)
inline
void
toposort()
}inline
void dfs(intu)}
inline
int swim(int x,int
h)inline
int lca(int x,int
y) x=swim(x,dep[x]-dep[y]);
if(x==y) return
x;
while(true)}
inline
void
aireen()
}tot=cnt=0
;toposort();
for(int i=1;i<=n;++i)
a[i].n=i;
sort(a+1,a+1+n,cmp);
for(int q=1,i,j,l;q<=n;++q)
else
}dfs(0);
for(int i=1;i<=n;++i)
printf(
"%d\n
",siz[i]-1);}
intmain()
小問題,大災難 如何避免證書過期?
我們經常會忽略企業中的一些不斷變化的細微的活動的影響,尤其是那些看似很小或無關緊要的部分,只有當某個嚴重錯誤產生時,我們才會意識到它的重要性。證書管理就是個很好的例子。2019年5月4日,由於開源瀏覽器公司mozilla未能及時處理證書更新問題,而導致全球數百萬firefox使用者無法使用firef...
氣候變暖已成不可逆轉的重大災難?
氣候變暖已成不可逆轉的重大災難?減少二氧化碳排放為時已晚,氣候變暖已經成為不可逆轉的重大災難。今後100年,江蘇鎮江以東將沉於東海,必須及早採取對策,制定移民措施!南京理工大學離休教授王毓秀近日針對氣候變暖,奮筆疾書。這是危言聳聽 杞人憂天,還是未雨綢繆 預警鐘聲?記者昨日採訪了王教授。王毓秀曾從事...
日常訓練 壓縮
巨大的文字往往令人頭疼,特別是文字內容有大量重複的情況下,巨大的文字不便於運輸和閱讀,於是我們提出了noip nonsense obivous index pattern 荒謬的顯然索引法 一種 有效的 壓縮文字的方法。noip壓縮後的格式很特別,乙個文字壓縮後由若干個單元組成,每個單元由3部分組成...