一道傳遞閉包題

2021-08-02 10:09:21 字數 1157 閱讀 2833

省選時孫耀峰大爺講過傳遞閉包相關問題,沒想到竟然遇上了。

傳送門這題其實可以用孫耀峰大爺**中「不完全動態傳遞閉包」,但利用題目中的一些性質會更好。

我一開始的想法是,先將原圖scc縮點,對於每乙個操作時刻結束後,整個圖一定是dag套樹,用靜態傳遞閉包+動態樹相關理論即可。因為只有加點,所以可以倍增。

但我們注意到,對於乙個詢問,如果當前答案為假,那麼之後答案也不會為真,因為只有加點,對於原有的點之間並不會加邊,所以原先的連通性不會變。利用這個性質,我們只要把所以操作結束後的圖做下靜態傳遞閉包就好了。

#include

#include

#include

#include

using

namespace

std;

inline

int getint()

const

int n=50010,m=150010;

struct graphe[m];

void init(int n)

void addedge(int a,int b);

h[a]=xb;

}};struct dag:graph

}void work()

inline

bool is_anc(int u,int v)

}g1;

struct scc_graph:graph

void tarjan()

void rebuild(dag&g)

}g;

int n,m,q,i,u,v,q1[m],q2[m],t,x,y;

int main()

q=getint();

for(i=1;i<=q;++i)else q1[++x]=u,q2[x]=v;

}g.n=y;

g.tarjan();

g1.init(g.scc_cnt);

g.rebuild(g1);

g1.work();

for(i=1;i<=x;++i)

if(g1.is_anc(g.sccno[q1[i]],g.sccno[q2[i]]))puts("yes");

else

puts("no");

return

0;}

JS中一道關於this和閉包的題

var num 20 var obj num var fn obj.fn fn obj.fn console.log window.num,obj.num 65 85 240,120 obj.fn 執行 執行this.num 3 將全域性下的num改為 60 執行 num 15,將私有作用域下的nu...

傳遞閉包經典題

傳遞閉包 給了 a 與 b 的關係,又給了 b 與 c 的關係,我們可以推測出 a 與 c 的關係,這個過程就是傳遞閉包。過程for k,1 n for i,1 n for j,1 n 傳遞閉包經常與 typo 一起使用,在傳遞閉包求出先後 比較 優先順序關係之後用 typo sort 求出這個順序...

一道演算法題

兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...