P2002 訊息擴散 縮點

2022-05-31 13:21:11 字數 934 閱讀 5034

描述:

有n個城市,中間有單向道路連線,訊息會沿著道路擴散,現在給出n個城市及其之間的道路,問至少需要在幾個城市發布訊息才能讓這所有n個城市都得到訊息。

tarjan縮點

縮點以後圖就變成了幾張無環圖

那麼對於這樣的圖,入度為0的點就是答案

因為入度不為0的點會一直把訊息傳達下去

#include #include 

#include

#include

#include

using

namespace

std;

const

int maxn=500005

;int

n,m,fen,belong[maxn];

struct

pd[maxn];

int cnt=1

,head[maxn];

void add(int u,int

v)int

low[maxn],dfn[maxn],stac[maxn],vis[maxn],top,id,ru[maxn];

void tarjan(int

x)

else

if(vis[y]) low[x]=min(low[x],low[y]);

}if(low[x]==dfn[x])

}}int

main()

for(int i=1;i<=n;i++)

if(!dfn[i]) tarjan(i);

for(int i=1;i<=n;i++)

int ans=0

;

for(int i=1;i<=fen;i++)

if(!ru[i]) ans++;

cout

}

P2002 訊息擴散

本場比賽第一題,給個簡單的吧,這 100 分先拿著。有n個城市,中間有單向道路連線,訊息會沿著道路擴散,現在給出n個城市及其之間的道路,問至少需要在幾個城市發布訊息才能讓這所有n個城市都得到訊息。輸入格式 第一行兩個整數n,m表示n個城市,m條單向道路。以下m行,每行兩個整數b,e表示有一條從b到e...

P2002 訊息擴散

本場比賽第一題,給個簡單的吧,這 100 分先拿著。有n個城市,中間有單向道路連線,訊息會沿著道路擴散,現在給出n個城市及其之間的道路,問至少需要在幾個城市發布訊息才能讓這所有n個城市都得到訊息。輸入格式 第一行兩個整數n,m表示n個城市,m條單向道路。以下m行,每行兩個整數b,e表示有一條從b到e...

P2002 訊息擴散

本場比賽第一題,給個簡單的吧,這 100 分先拿著。有n個城市,中間有單向道路連線,訊息會沿著道路擴散,現在給出n個城市及其之間的道路,問至少需要在幾個城市發布訊息才能讓這所有n個城市都得到訊息。輸入格式 第一行兩個整數n,m表示n個城市,m條單向道路。以下m行,每行兩個整數b,e表示有一條從b到e...