0x20 拓撲排序,bitset

2021-10-09 04:37:20 字數 1844 閱讀 9361

拓撲排序,鏈式前向星,bitset

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

const

int n =

30020

;int n,m;

struct edgeedge[n]

;int head[n]

,cnt;

int in[n]

,seq[n]

;//拓撲排序後的序列

bitsetf[n]

;void

add(

int a,

int b)

void

topsort()

int k =0;

while

(!q.

empty()

)}}int

main()

topsort()

;for

(int i=n-1;

~i;i--)}

for(

int i=

1;i<=n;i++

)cout << f[i]

.count()

<< endl;

//表示1的個數

return0;

}

簡單dfs

每次纜車可以裝重量為w的貓,問需要多少次才能送完.

int n,w;

int a[maxn]

,v[maxn]

,ans;

bool

cmp(

int a,

int b)

void

dfs(

int x,

int cnt)

for(

int i=

1;i<=cnt;i++)}

v[cnt+1]

= a[x]

;dfs

(x+1

,cnt+1)

; v[cnt+1]

=0;}

intmain()

一串字元,解數獨;

找到當前可能性最小的點bfs,對於點(x,y),每行每列每個九宮格都去除這個點的值

inline

intlowbit

(int x)

int ones[

1<< n]

,mp[

1<< n]

;int row[n]

,col[n]

,cell[3]

[3];

char str[

100]

;void

init()

}}inline

intget

(int x,

int y)

bool

dfs(

int cnt)}}

}for

(int i=

get(x,y)

;i;i-

=lowbit

(i))

return

false;}

intmain()

while

(cin >> str && str[0]

!='e'

)else cnt ++;}

}dfs

(cnt)

; cout << str << endl;

}return0;

}

HDU 5413 拓撲排序 BITSET

題意 給定一張有向圖,對於邊 ev 如果去掉它的話,u仍然可以到達v的話,那麼這條邊就是多餘邊。解法 顯然的乙個思路是倒著做。先topo一遍,然後倒著來,這裡需要用到bitset維護每個點可以和哪些點直接相連,利用bitset是為了不超記憶體,然後用bitset處理出關係之後就可以遍歷尋找答案了。i...

X 拓撲排序 一

描述 由於今天上課的老師講的特別無聊,小hi和小ho偷偷地聊了起來。小ho 小hi,你這學期有選什麼課麼?小hi 挺多的,比如 1,2還有 3。本來想選yyy2的,但是好像沒有先選過yyy1,不能選yyy2。小ho 先修課 是個麻煩的東西呢。小hi 沒錯呢。好多課程都有先修課程,每次選課之前都得先查...

將字串中出現的空格替換成0x20

背景,在網路程式設計中,如果url引數含有特殊字元,如空格,等,可能導致伺服器端無法獲得正確的引數值。我們需要將這些特殊符號轉換成伺服器可以識別的字元。轉換的規則是在 後面跟上ascii碼的兩位十六進製制數表示,比如空格的ascii碼是32,即十六進製制的20,因此空格被替換成 20。再比如 的as...