時間限制:10000ms
單點時限:1000ms
記憶體限制:256mb
描述小hi和小ho所在學校的校園網被黑客入侵並投放了病毒。這事在校內bbs上立刻引起了大家的討論,當然小hi和小ho也參與到了其中。從大家各自了解的情況中,小hi和小ho整理得到了以下的資訊:
舉個例子,假設切斷部分網路連線後學校網路如下圖所示,由4個節點和4條鏈結構成。最開始只有節點1上有病毒。
最開始節點1向節點2和節點3傳送了病毒,自身留有1個病毒:
其中乙個病毒到達節點2後,向節點3傳送了乙個病毒。另乙個到達節點3的病毒向節點4傳送自己的拷貝:
當從節點2傳送到節點3的病毒到達之後,該病毒又傳送了乙份自己的拷貝向節點4。此時節點3上留有2個病毒:
最後每個節點上的病毒為:
小hi和小ho根據目前的情況發現一段時間之後,所有的節點病毒數量一定不會再發生變化。那麼對於整個網路來說,最後會有多少個病毒呢?
輸入第1行:3個整數n,m,k,1≤k≤n≤100,000,1≤m≤500,000
第2行:k個整數a[i],a[i]表示黑客在節點a[i]上放了1個病毒。1≤a[i]≤n
輸出第1行:1個整數,表示最後整個網路的病毒數量 mod 142857
樣例輸入
4 4 1樣例輸出11 2
1 32 3
3 4
6題意:病毒傳染,結點為流入它的結點的病毒和
思路:拓撲排序,將前置點的和加到後置點
#include#include#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define inf 0x3f3f3f3f
#define eps 1e-10
const
int maxn=5e5+5
;const
int mod=142857
;int
n,m,u,v,indeg[maxn],k,virus[maxn];
vector
vec[maxn];
queue
q;void
topu()
virus[vec[now][i]]=(virus[vec[now][i]]+virus[now])%mod;}}
}int
main()
while(m--)
topu();
int ans=0
;
for(int i=1;i<=n;i++)
ans=(ans+virus[i])%mod;
cout}}
hihocoder 1174 拓撲排序模板
描述 由於今天上課的老師講的特別無聊,小hi和小ho偷偷地聊了起來。小ho 小hi,你這學期有選什麼課麼?小hi 挺多的,比如 1,2還有 3。本來想選yyy2的,但是好像沒有先選過yyy1,不能選yyy2。小ho 先修課 是個麻煩的東西呢。小hi 沒錯呢。好多課程都有先修課程,每次選課之前都得先查...
hihocoder1174 拓撲排序1
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述由於今天上課的老師講的特別無聊,小hi和小ho偷偷地聊了起來。小ho 小hi,你這學期有選什麼課麼?小hi 挺多的,比如 1,2還有 3。本來想選yyy2的,但是好像沒有先選過yyy1,不能選yyy2。小ho 先修課 是個...
python 拓撲排序 Python 拓撲排序
python 拓撲排序 在圖論中,由乙個有向無環圖的頂點組成的序列,當且僅當滿足下列條件時,稱為該圖的乙個拓撲排序 英語 topological sorting 每個頂點出現且只出現一次 若a在序列中排在b的前面,則在圖中不存在從b到a的路徑。print 拓撲排序結果 g.topologicalso...