題面
題解我寫的是讓同一行、同一列的點形成乙個環,表示它們互相可達。
$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個點有寶藏 每個有寶藏的點上都有傳送門 傳送門有三種 第一種可以傳到該行任意乙個有寶藏的點,第二種可以傳到該列任意乙個有寶藏的點,第三種可以傳到周圍的八連塊上有寶藏的點 現在你可以在任意乙個有寶藏的點開始,求你最多可以經過多少個不同的藏寶點 每個藏寶點可以多次進...