圖的遍歷
原題鏈結
本題思路
建立乙個圖的鄰接表
每個煉表裡都儲存了與之直連的點,那判斷乙個點的可達性,可求那些直連點自己煉表裡儲存點的並集
優化方案與技巧
bitset
將數壓縮為二進位制形式(內部表現)的十進位制(外部表現)
陣列模擬鄰接表
int e[n]
, ne[n]
, h[n]
, idx;
void
add(
int a,
int b)
topsort模板int seq[n]
;void
topsort()
}}
notes:用c語言的輸入輸出會快一些
ac**
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn =
30005
;int n, m;
int h[maxn]
, e[maxn]
, ne[maxn]
, idx;
int d[maxn]
, seq[maxn]
;bitset f[maxn]
;void
add(
int a,
int b)
void
topsort()
}}intmain()
topsort()
;for
(int i = n-
1; i >=
0; i--
)for
(int i =
1; i <= n; i++
) cout << f[i]
.count()
<< endl;
return0;
}
AcWing 164 可達性統計
給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。輸入格式 第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出格式 輸出共n行,表示每個點能夠到達的點的數量。資料範圍 1 n,m 30000 輸入樣例 10 10 3 82 3 2 55 9 5...
AcWing 164 可達性統計
給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。輸入格式 第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出格式 輸出共n行,表示每個點能夠到達的點的數量。資料範圍1 n,m 30000 1 n,m 30000 顯然可以用拓撲排序 狀態壓縮來...
可達性統計
題目描述 給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。n,m 30000。輸入第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出共n行,表示每個點能夠到達的點的數量。樣例輸入 複製樣例資料 10 10 3 82 3 2 55 9 5 92...