P3183 [HAOI2016]食物鏈

来源:http://www.cnblogs.com/zwfymqz/archive/2017/09/23/7580114.html
-Advertisement-
Play Games

題目描述 如圖所示為某生態系統的食物網示意圖,據圖回答第1小題現在給你n個物種和m條能量流動關係,求其中的食物鏈條數。物種的名稱為從1到n編號M條能量流動關係形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量從物種ai流向物種bi,註意單獨的一種孤立生物 ...


題目描述

如圖所示為某生態系統的食物網示意圖,據圖回答第1小題現在給你n個物種和m條能量流動關係,求其中的食物鏈條數。物種的名稱為從1到n編號M條能量流動關係形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量從物種ai流向物種bi,註意單獨的一種孤立生物不算一條食物鏈

輸入輸出格式

輸入格式:

 

第一行兩個整數n和m,接下來m行每行兩個整數ai bi描述m條能量流動關係。(數據保證輸入數據符號生物學特點,且不會有重覆的能量流動關係出現)1<=N<=100000 0<=m<=200000題目保證答案不會爆 int

 

輸出格式:

 

一個整數即食物網中的食物鏈條數

 

輸入輸出樣例

輸入樣例#1:
10 16
1 2
1 4
1 10
2 3
2 5
4 3
4 5
4 8
6 5
7 6
7 9
8 5
9 8
10 6
10 7
10 9

題目標簽寫的是動態規劃,但是自己yy了一種拓撲排序+出入度統計的做法,第一遍交居然A了,,
做法很簡單,
記兩個入度數組,一個用作拓撲排序,一個用作判斷答案,然後記一個出度,
拓撲排序
最後特判一下加個和就好

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 using namespace std;
 7 const int MAXN=400001;
 8 inline void read(int &n)
 9 {
10     char c=getchar();n=0;bool flag=0;
11     while(c<'0'||c>'9')    c=='-'?flag=1,c=getchar():c=getchar();
12     while(c>='0'&&c<='9')    n=n*10+c-48,c=getchar();flag==1?n=-n:n=n;
13 }
14 struct node
15 {
16     int u,v,w,nxt;
17 }edge[MAXN];
18 int head[MAXN];
19 int num=1;
20 int dp[MAXN];
21 int chudu[MAXN];
22 int rudu2[MAXN];
23 inline void add_edge(int x,int y,int z)
24 {
25     edge[num].u=x;
26     edge[num].v=y;
27     edge[num].w=z;
28     edge[num].nxt=head[x];
29     head[x]=num++;
30 }
31 int rudu[MAXN];
32 int n,m;
33 void Topsort()
34 {
35     queue<int>q;
36     int tot=0;
37     for(int i=1;i<=n;i++)
38         if(!rudu[i])    q.push(i),tot++;
39     while(q.size()!=0)
40     {
41         int p=q.front();
42         q.pop();
43         for(int i=head[p];i!=-1;i=edge[i].nxt)
44         {
45             dp[edge[i].v]+=dp[p];
46             rudu[edge[i].v]--;
47             if(!rudu[edge[i].v]    )    q.push(edge[i].v);
48         }
49     }
50 }
51 int main()
52 {
53     memset(head,-1,sizeof(head));
54     read(n);read(m);
55     for(int i=1;i<=m;i++)
56     {
57         int a,b;read(a);read(b);
58         add_edge(a,b,1);
59         rudu[b]++;
60         rudu2[b]++;
61         chudu[a]++;
62     }
63     for(int i=1;i<=n;i++)
64         if(!rudu[i])    dp[i]=1;
65     Topsort();
66     int ans=0;
67     for(int i=1;i<=n;i++)
68         if(chudu[i]==0&&rudu2[i]!=0)
69             ans+=dp[i];
70     printf("%d",ans);
71     return 0;
72 }

 

 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • XML——>treeciew ...
  • 回到目錄 對於Dapper是一個輕量級的數據訪問框架,而需要使用者去自己做SQL,它,只是一個數據訪問者! 對些,Dapper推出了Contrib擴展包,它可以友好的讓開發人員使用linq,而不需要寫SQL,但在使用時要註意,你的增,刪,改,單表查詢是可以用它的,但對於多表的join操作就不要用了, ...
  • 目前我用的vs2017的版本是15.3.5。生成解決方案有時會提示如下: 開始以為是許可權的問題,找到相應的目錄設置everyone許可權,再次生成還是不行。重啟VS試了下,還是不行。 最後無奈重啟下電腦,再重新生成,終於沒有這個問題了。 可是好景不長,改了代碼,再次重新生成,又出現了這個問題,都快被逼 ...
  • dynamic是Framework4.0的新特性,dynamic的出現讓C#具有了弱語言類型的特性,編譯器在編譯的時候,不再對類型進行檢查,不會報錯,但是運行時如果執行的是不存在的屬性或者方法,運行程式還是會拋出RuntimeBinderException異常。 var 與 dynamic 的區別 ...
  • 最近.NET Core升級到2.0後開始慢慢搗鼓的多了起來,但遇到了不少坑,所以特來記錄下。 第一個坑 條件編譯符 我們在編寫一些方法的時候通常會為Debug模式增加一些輸出日誌等以便我們檢查,也會為Release模式增加或修改一些特定的參數,但今天我在寫這些的時候就遇到了這個坑#if !DEBUG ...
  • 背水一戰 Windows 10 之 控制項(WebView): 對 WebView 中的內容截圖, 通過 Share Contract 分享 WebView 中的被選中的內容 ...
  • lintcode :First Unique Number In Stream ...
  • 近期,DataCamp發佈了jupyter notebook的 cheat sheet,【Python數據之道】第一時間與大家一起來分享下該cheat sheet的內容。 以下是該cheat sheet的部分內容: 各位小伙伴可以從DataCamp的網站獲取該cheat sheet的pdf版,當然, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 插件化的需求主要源於對軟體架構靈活性的追求,特別是在開發大型、複雜或需要不斷更新的軟體系統時,插件化可以提高軟體系統的可擴展性、可定製性、隔離性、安全性、可維護性、模塊化、易於升級和更新以及支持第三方開發等方面的能力,從而滿足不斷變化的業務需求和技術挑戰。 一、插件化探索 在WPF中我們想要開 ...
  • 歡迎ReaLTaiizor是一個用戶友好的、以設計為中心的.NET WinForms項目控制項庫,包含廣泛的組件。您可以使用不同的主題選項對項目進行個性化設置,並自定義用戶控制項,以使您的應用程式更加專業。 項目地址:https://github.com/Taiizor/ReaLTaiizor 步驟1: ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • Channel 是乾什麼的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consume ...
  • efcore如何優雅的實現按年分庫按月分表 介紹 本文ShardinfCore版本 本期主角: ShardingCore 一款ef-core下高性能、輕量級針對分表分庫讀寫分離的解決方案,具有零依賴、零學習成本、零業務代碼入侵適配 距離上次發文.net相關的已經有很久了,期間一直在從事java相關的 ...
  • 前言 Spacesniffer 是一個免費的文件掃描工具,通過使用樹狀圖可視化佈局,可以立即瞭解大文件夾的位置,幫助用戶處理找到這些文件夾 當前系統C盤空間 清理後系統C盤空間 下載 Spacesniffer 下載地址:https://spacesniffer.en.softonic.com/dow ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • 一、ReZero簡介 ReZero是一款.NET中間件 : 全網唯一開源界面操作就能生成API , 可以集成到任何.NET6+ API項目,無破壞性,也可讓非.NET用戶使用exe文件 免費開源:MIT最寬鬆協議 , 一直從事開源事業十年,一直堅持開源 1.1 純ReZero開發 適合.Net Co ...
  • 一:背景 1. 講故事 停了一個月沒有更新文章了,主要是忙於寫 C#內功修煉系列的PPT,現在基本上接近尾聲,可以回頭繼續更新這段時間分析dump的一些事故報告,有朋友微信上找到我,說他們的系統出現了大量的http超時,程式不響應處理了,讓我幫忙看下怎麼回事,dump也抓到了。 二:WinDbg分析 ...
  • 開始做項目管理了(本人3年java,來到這邊之後真沒想到...),天天開會溝通整理需求,他們講話的時候忙裡偷閑整理一下常用的方法,其實語言還是有共通性的,基本上看到方法名就大概能猜出來用法。出去打水的時候看到外面太陽好好,真想在外面坐著曬太陽,回來的時候好兄弟三年前送給我的鍵盤D鍵不靈了,在打"等待 ...