可達性統計(拓撲排序)

2022-05-11 05:19:08 字數 736 閱讀 5272

給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。n,m≤30000。

第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。

共n行,表示每個點能夠到達的點的數量。

10 10

3 82 3

2 55 9

5 92 3

3 94 8

2 10

4 9

163

3211

111

分析:拓撲排序,為了計數方便避免重覆記錄後續,使用bitset來儲存n個結點對於n個結點的可達情況,二進位制直接通過或運算即可從後向前掃瞄拓撲序列。

#define max 30001

int head[max],nxt[max],ver[max],deg[max];

int a[max];

int n,m;

int cnt = 0,tot=0;

bitset<30001> s[max];

void add(int x,int y)

void topsort() }}

void sol() }}

int main()

topsort();

sol();

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

return 0;

}

拓撲排序 可達性統計

給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。輸入格式 第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出格式 輸出共n行,表示每個點能夠到達的點的數量。資料範圍 1 n,m 300001 n,m 30000 輸入樣例 10 10 3 82...

可達性統計 拓撲排序 bitset

給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。輸入格式 第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出格式 輸出共n行,表示每個點能夠到達的點的數量。資料範圍 1 n,m 30000 輸入樣例 10 10 3 82 3 2 55 9 5...

upc 可達性統計 (拓撲排序 bitset)

題目描述 給定一張n個點m條邊的有向無環圖,分別統計從每個點出發能夠到達的點的數量。n,m 30000。輸入第一行兩個整數n,m,接下來m行每行兩個整數x,y,表示從x到y的一條有向邊。輸出共n行,表示每個點能夠到達的點的數量。10 10 3 82 3 2 55 9 5 92 3 3 94 8 2 ...