SDOI2010 所駝門王的寶藏

2022-05-23 22:12:08 字數 1611 閱讀 2323

題面

題解我寫的是讓同一行、同一列的點形成乙個環,表示它們互相可達。

$aysn$寫的是對於同一行列建乙個新點表示互相可達。

看了窩還是太弱了,還須多練。

#include#include

#include

#include

#include

#include

#include

#include

#define ri register int

#define n 100500

using

namespace

std;

const

int dx=,dy=;

intn,r,c;

int dfn[n],low[n],tot=0,inq[n],stk[n],top=0

;int

f[n];

int bel[n],cc=0

;int

x[n],y[n],t[n];

mapint,int>,int>ot;

vector

int,int> >e;

vector

about[n];

intval[n];

int idx[n],cntx=0,idy[n],cnty=0

;vector

to[n];

void add_edge(int x,int

y) bool cmpx(int a,int

b) bool cmpy(int a,int

b) void

linkx() }}}

void

linky() }}}

int prex(int

i)void

linkx2()

}}int prey(int

i)void

linky2()

}}void tarjan(int

x)

else

} if (low[x]==dfn[x])

while (t!=x);

}}void

makegraph()

void dp(int

x) f[x]+=val[x];

}int

main()

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

else

if (t[i]==2

)

else

if (t[i]==3

) }

} linkx();

linky();

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

if (t[i]==2 || t[i]==3

) }

linkx2();

linky2();

for (ri i=1;i<=n;i++) if (!dfn[i]) tarjan(i);

makegraph();

memset(f,-1,sizeof

(f));

int ans=0;

for (ri i=1;i<=cc;i++)

cout

}

SDOI2010 所駝門王的寶藏

在寬廣的非洲荒漠中,生活著一群勤勞勇敢的羊駝家族。被族人恭稱為 先知 的alpaca l.sotomon是這個家族的領袖,外人也稱其為 所駝門王 所駝門王畢生致力於維護家族的安定與和諧,他曾親自率軍粉碎河蟹帝國主義的野蠻侵略,為族人立下赫赫戰功。所駝門王一生財寶無數,但因其生性節儉低調,他將財寶埋藏...

P2403 SDOI2010 所駝門王的寶藏

在寬廣的非洲荒漠中,生活著一群勤勞勇敢的羊駝家族。被族人恭稱為 先知 的alpaca l.sotomon是這個家族的領袖,外人也稱其為 所駝門王 所駝門王畢生致力於維護家族的安定與和諧,他曾親自率軍粉碎河蟹帝國主義的野蠻侵略,為族人立下赫赫戰功。所駝門王一生財寶無數,但因其生性節儉低調,他將財寶埋藏...

bzoj 1924 所駝門王的寶藏

題目大意 有乙個r c的矩陣,上面有n個點有寶藏 每個有寶藏的點上都有傳送門 傳送門有三種 第一種可以傳到該行任意乙個有寶藏的點,第二種可以傳到該列任意乙個有寶藏的點,第三種可以傳到周圍的八連塊上有寶藏的點 現在你可以在任意乙個有寶藏的點開始,求你最多可以經過多少個不同的藏寶點 每個藏寶點可以多次進...