P4017 最大食物鏈計數-拓撲排序

P4017 最大食物鏈計數
題目來源-洛谷
在這里插入圖片描述

題意

要求最長食物鏈的數量。按照題意,最長食物鏈就是指有向無環圖DAG中入度為0到出度為0的不同路徑的數量(鏈數)
在這里插入圖片描述

思路

  • 在計算時,明顯:一個被捕食者所在節點的食物鏈路徑是其所有捕食者的路徑條數之和,要計算k節點所在的鏈數,必須清楚其所有入度節點的鏈數。即存在拓撲排序

    在這里插入圖片描述

  • 因此借助拓撲排序的方法:計算所有食物鏈數量=計算每個食物鏈終點的節點(出度為0的節點)的路徑樹之和

    1. 建立隊列,所有入度為0的節點入隊,初始值為1

    2. 遍歷,取出隊首元素k節點,遍歷其相鄰的子節點(被捕食者),讓其子節點的食物鏈數量值得+k節點的數,并讓其子節點入度為-1。若該節點入度為0則推入隊。

    3. 重復第二遍操作

    4. 遍歷所有出度為0 的節點(說明這些這些節點所在的最大鏈不會完全相交-是相對獨立的食物鏈),例如5和6兩個節點

      在這里插入圖片描述

數據約束

注意數組范圍即可

參考代碼

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5005;
int m,n;//n個點m條邊 
vector<int> p[MAXN];//鄰接表存圖 
int rd[MAXN],cd[MAXN];
queue<int> q;
int ans[MAXN],num = 0;
int main(){ int x,y;cin>>n>>m;for(int i=0;i<m;i++){cin>>x>>y;p[x].push_back(y);cd[x]++;//出度+1 -作為捕食者 rd[y]++;//入度+1 作為被捕食者 }//拓撲排序 //從食物鏈的起點  即入度為0的點for(int i=1;i<=n;i++) {if(rd[i] == 0){q.push(i);ans[i] = 1;//初始鏈設為1 }}while(!q.empty()){int t = q.front();q.pop();for(int i=0;i<p[t].size();i++){int k = p[t][i];//遍歷到的節點設置為k ans[k]  = (ans[t]+ans[k])%80112002 ;//食物鏈相加 rd[k] --; //該鏈計算過了 if(rd[k]==0){ //作為捕食者 q.push(k);}}}//遍歷找出度為0的點-說明是已經找到了食物鏈的終點 for(int i=1;i<=n;i++){if(cd[i]==0){num = (num+ ans[i])%80112002;//所有不相交的食物鏈加起來 }} cout<<num; return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902860.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xmind快捷鍵大全

常規 插入主題和元素&#xff08;常用&#xff09; 編輯主題文本和樣式 選擇和移動 調整畫布和視圖 工具和其他

四. 以Annoy算法建樹的方式聚類清洗圖像數據集,一次建樹,無限次聚類搜索,提升聚類搜索效率。(附完整代碼)

文章內容結構&#xff1a; 一. 先介紹什么是Annoy算法。 二. 用Annoy算法建樹的完整代碼。 三. 用Annoy建樹后的樹特征匹配聚類歸類圖像。 一. 先介紹什么是Annoy算法 下面的文章鏈接將Annoy算法講解的很詳細&#xff0c;這里就不再做過多原理的分析了&#xff0c;想詳細了解…

什么是電容?

什么是電容&#xff1f; 電荷與電壓的比值就是電容量C。電容單位為法拉(F)。1法拉電容器在電壓為1V時儲存的電荷量為1庫倫(C)。圖1.1中的球體表面電壓與儲存的電荷Q關聯。電壓V等于。Q/V等于。如果球體位于電介質媒介中&#xff0c;電壓V降低倍&#xff0c;Q/V等于。在電介質媒…

Linux服務器上mysql8.0+數據庫優化

1.配置文件路徑 /etc/my.cnf # CentOS/RHEL /etc/mysql/my.cnf # Debian/Ubuntu /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu/Debian檢查當前配置文件 sudo grep -v "^#" /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "^$&q…

MQTT學習資源

MQTT入門&#xff1a;強烈推薦

第十二章 Python語言-大數據分析PySpark(終)

目錄 一. PySpark前言介紹 二.基礎準備 三.數據輸入 四.數據計算 1.數據計算-map方法 2.數據計算-flatMap算子 3.數據計算-reduceByKey方法 4.數據計算-filter方法 5.數據計算-distinct方法 6.數據計算-sortBy方法 五.數據輸出 1.輸出Python對象 &#xff08;1&am…

【XR手柄交互】Unity 中使用 InputActions 實現手柄控制詳解(基于 OpenXR + Unity新輸入系統(Input Actions))

摘要&#xff1a; 本文主要介紹如何使用 Input Actions&#xff08;Unity 新輸入系統&#xff09; OpenXR 來實現 VR手柄控制&#xff08;監聽ABXY按鈕、搖桿、抓握等操作&#xff09;。 &#x1f3ae; Unity 中使用 InputActions 實現手柄控制詳解&#xff08;基于 OpenXR 新…

java實現網格交易回測

以下是一個基于Java實現的簡單網格交易回測程序框架&#xff0c;以證券ETF&#xff08;512880&#xff09;為例。代碼包含歷史數據加載、網格策略邏輯和基礎統計指標&#xff1a; import java.io.BufferedReader; import java.io.FileReader; import java.text.ParseException…

探秘 3D 展廳之卓越優勢,解鎖沉浸式體驗新境界

&#xff08;一&#xff09;打破時空枷鎖&#xff0c;全球觸達? 3D 展廳的首要優勢便是打破了時空限制。在傳統展廳中&#xff0c;觀眾需要親臨現場&#xff0c;且必須在展廳開放的特定時間內參觀。而 3D 展廳依托互聯網&#xff0c;讓觀眾無論身處世界哪個角落&#xff0c;只…

第十二屆藍橋杯 2021 C/C++組 直線

目錄 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路&#xff1a; 核心思路&#xff1a; 兩點確定一條直線&#xff1a; 思路詳解&#xff1a; 代碼&#xff1a; 第一種方式代碼詳解&#xff1a; 第二種方式代碼詳解&#xff1a; 題目&#xff1a;…

微信小程序藍牙連接打印機打印單據完整Demo【藍牙小票打印】

文章目錄 一、準備工作1. 硬件準備2. 開發環境 二、小程序配置1. 修改app.json 三、完整代碼實現1. pages/index/index.wxml2. pages/index/index.wxss3. pages/index/index.js 四、ESC/POS指令說明五、測試流程六、常見問題解決七、進一步優化建議 下面我將提供一個完整的微信…

ubuntu opencv 安裝

1.ubuntu opencv 安裝 在Ubuntu系統中安裝OpenCV&#xff0c;可以通過多種方式進行&#xff0c;以下是一種常用的安裝方法&#xff0c;包括從源代碼編譯安裝。請注意&#xff0c;安裝步驟可能會因OpenCV的版本和Ubuntu系統的具體版本而略有不同。 一、安裝準備 更新系統&…

【C++】class靜態常量

Usage: static const T 1 background static const成員屬于類&#xff0c;而不是類的實例&#xff0c;所以它們的初始化需要在類外進行(或者在C17之后可以用inline初始化)。 使用中可能遇到的情況&#xff1a; 在頭文件中聲明一個static const成員&#xff0c;然后在多個cpp…

Java 安全:如何防止 DDoS 攻擊?

一、DDoS 攻擊簡介 DDoS&#xff08;分布式拒絕服務&#xff09;攻擊是一種常見的網絡攻擊手段&#xff0c;攻擊者通過控制大量的僵尸主機向目標服務器發送海量請求&#xff0c;致使服務器資源耗盡&#xff0c;無法正常響應合法用戶請求。在 Java 應用開發中&#xff0c;了解 …

統計文件中單詞出現的次數并累計

# 統計單詞出現次數 fileopen("E:\Dasktape/python_test.txt","r",encoding"UTF-8") f1file.read() # 讀取文件 countf1.count("is") # 統計文件中is 單詞出現的次數 print(f"此文件中單詞is出現了{count}次")# 2.判斷單詞出…

C語言實現貪心算法

一、貪心算法核心思想 特征&#xff1a;在每一步選擇中都采取當前狀態下最優&#xff08;局部最優&#xff09;的選擇&#xff0c;從而希望導致全局最優解 適用場景&#xff1a;需要滿足貪心選擇性質和最優子結構性質 二、經典貪心算法示例 1. 活動選擇問題 目標&#xff1a…

《一文讀懂Transformers庫:開啟自然語言處理新世界的大門》

《一文讀懂Transformers庫:開啟自然語言處理新世界的大門》 GitHub - huggingface/transformers: ?? Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. HF-Mirror Hello! Transformers快速入門 pip install transformers -i https:/…

Vue里面elementUi-aside 和el-main不垂直排列

先說解決方法 main.js少導包 import element-ui/lib/theme-chalk/index.css; //加入此行即可 問題復現 排查了一個小時終于找出來問題了&#xff0c;建議導包去看官方的文檔&#xff0c;作者就是因為看了別人的導包流程導致的問題 導包官網地址Element UI導包快速入門

MYSQL 常用字符串函數 和 時間函數詳解

一、字符串函數 1、?CONCAT(str1, str2, …) 拼接多個字符串。 SELECT CONCAT(Hello, , World); -- 輸出 Hello World2、SUBSTRING(str, start, length)?? 或 ?SUBSTR() 截取字符串。 SELECT SUBSTRING(MySQL, 3, 2); -- 輸出 SQ3、LENGTH(str)?? 與 ?CHAR_LENGTH…

Python-Agent調用多個Server-FastAPI版本

Python-Agent調用多個Server-FastAPI版本 Agent調用多個McpServer進行工具調用 1-核心知識點 fastAPI的快速使用agent調用多個server 2-思路整理 1&#xff09;先把每個子服務搭建起來2&#xff09;再暴露一個Agent 3-參考網址 VSCode配置Python開發環境&#xff1a;https:/…