描述:
有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...