BZOJ 1924 所駝門王的寶藏 縮點 最短路

2021-09-27 02:19:22 字數 1107 閱讀 9630

給出乙個1e6

∗1e6

1e6*1e6

1e6∗1e

6的矩形,矩形中有三種傳送門,分別是傳送這一行的任意乙個傳送門,或者傳送到這一列的任意乙個傳送門,或者是傳送附近8

88個位置的任意乙個傳送門。然後你可以選擇並且只能選擇從任何乙個傳送門進入,從任何乙個傳送門出來。求經過最多的點的個數是多少。

預處理所有的點,然後直接連邊。tarjan縮環之後跑spfa或者拓撲排序都可以。

#includeusing namespace std;

typedef long long ll;

const int inf=0x3f3f3f3f;

const ll inf=long_long_max;

const int n=1e5+7;

const int m=1e6+7;

int n,r,c;

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

map< pair,int >mp;

vectorr[m],c[m];

vectorg[n];

int dx=;

int dy=;

void add(int u,int v)

int dfn[n],low[n],tim=0;

int s[n],top=0;

bool ins[n];

int bel[n],w[n],scc=0;

void tarjan(int u)

}} }

return ans;

} int main()

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

else if(t[i]==2)

else if(t[i]==3)

}} }

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

} for(int i=1;i<=n;i++) );

} }for(int i=1;i<=scc;i++)

go[0].push_back();

int ans=spfa(0);

printf("%d\n",ans);

return 0;

}

bzoj 1924 所駝門王的寶藏

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

BZOJ1924 所駝門王的寶藏 KEY

題目傳送門 這道題苟了我好久,因為鍊錶的記憶體問題,之後再細講。首先這是一道tarjan dag上dp的題目。有三種門,對於每種門可以和其他門相連。即連邊。使用鍊錶快速查詢連邊。建完圖後可以進行tarjan縮點。然後做一遍dag上dp就好了。記搜 然後因為建圖時會有很多條邊,而行列最多只有10000...

BZOJ 1924 Sdoi2010 所駝門的寶藏

time limit 5 sec memory limit 128 mb submit 1380 solved 603 submit status discuss 第一行給出三個正整數 n,r,c。以下 n 行,每行給出一扇傳送門的資訊,包含三個正整數xi,yi,ti,表示該傳送門設在位於第 xi行...