給定一張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 ...