在寬廣的非洲荒漠中,生活著一群勤勞勇敢的羊駝家族。被族人恭稱為「先知」的alpaca l. sotomon是這個家族的領袖,外人也稱其為「所駝門王」。所駝門王畢生致力於維護家族的安定與和諧,他曾親自率軍粉碎河蟹帝國主義的野蠻侵略,為族人立下赫赫戰功。所駝門王一生財寶無數,但因其生性節儉低調,他將財寶埋藏在自己設計的地下宮殿裡,這也是今天henry curtis故事的起點。henry是乙個愛財如命的貪婪傢伙,而又非常聰明,他費盡心機謀劃了這次盜竊行動,破解重重機關後來到這座地下宮殿前。整座宮殿呈矩陣狀,由r×c間矩形宮室組成,其中有n間宮室裡埋藏著寶藏,稱作藏寶宮室。宮殿裡外、相鄰宮室間都由堅硬的實體牆阻隔,由一間宮室到達另一間只能通過所駝門王獨創的移動方式——傳送門。所駝門王為這n間藏寶宮室每間都架設了一扇傳送門,沒有寶藏的宮室不設傳送門,所有的宮室傳送門分為三種:
「橫天門」:由該門可以傳送到同行的任一宮室;
「縱寰門」:由該門可以傳送到同列的任一宮室;
「自由*」:由該門可以傳送到以該門所在宮室為中心周圍8格中任一宮室(如果目標宮室存在的話)。
深謀遠慮的henry當然事先就搞到了所駝門王當年的宮殿招標冊,書冊上詳細記錄了每扇傳送門所屬宮室及型別。而且,雖然宮殿內外相隔,但他自行準備了一種可攜式傳送門,可將自己傳送到殿內任意一間宮室開始尋寶,並在任意一間宮室結束後傳送出宮。整座宮殿只許進出一次,且便攜門無法進行宮室之間的傳送。不過好在宮室內傳送門的使用沒有次數限制,每間宮室也可以多次出入。
現在henry已經開啟了便攜門,即將選擇一間宮室進入。為得到盡多寶藏,他希望安排一條路線,使走過的不同藏寶宮室盡可能多。請你告訴henry這條路線最多行經不同藏寶宮室的數目。
輸入格式:輸入樣例#1:輸入檔案sotomon.in第一行給出三個正整數n, r, c。
以下n行,每行給出一扇傳送門的資訊,包含三個正整數xi, yi, ti,表示該傳送門設在位於第xi行第yi列的藏寶宮室,型別為ti。ti是乙個1~3間的整數,1表示可以傳送到第xi行任意一列的「橫天門」,2表示可以傳送到任意一行第yi列的「縱寰門」,3表示可以傳送到周圍8格宮室的「自由*」。
保證1≤xi≤r,1≤yi≤c,所有的傳送門位置互不相同。
輸出格式:
輸出檔案sotomon.out只有乙個正整數,表示你確定的路線所經過不同藏寶宮室的最大數目。
輸出樣例#1:10 7 72 2 1
2 4 2
1 7 2
2 7 3
4 2 2
4 4 1
6 7 3
7 7 1
7 5 2
5 2 1
資料規模和約定:9
1.首先需要動態開節點,然後通過門的類別建立節點之間的邊。
第一種:歸屬於x座標對應的超級點,y座標對應的點連向x座標對應的點。2.對於第三種點的連邊,可以用hash優化,也可以用map。第二種:歸屬於y座標對應的超級點,x座標對應的點連向y座標對應的點。
第三種:歸屬於本身(另開乙個超級節點),若其x或y座標上有超級點,則由其向當前點連邊。然後搜尋其周圍八個位置,若有節點,則由該店連線其對應的超級點。
3.最後就是縮點,跑拓撲圖了。
1 #include2**#define ll long long
3using
namespace
std;
4int n,a,b,col[3000050
],now;
5int dfn[3000050],low[3000050
],cnt,sum;
6int t[3000050],du[3000050
],top;
7int dis[300050
],ans;
8int posx[1000050],posy[1000050
],tot;
9struct
nde10
18}tp1,tp2;
19struct
noe20
32int find(int x,int
y)33
42#undef p
43}hash;
44struct
node
45num[1000050
];48
void tarjan(int
u)49
58else
if(!col[tp1.ver[i]])
59 low[u]=min(low[u],dfn[tp1.ver[i]]);
60if(low[u]==dfn[u])
6168}69
}70void
spfa()
7179
while(!q.empty())
8090}91
}92intmain()
93107
for(int i=1;i<=n;++i)
108if(num[i].flag==1
)109
113else
if(num[i].flag==2
)114
118else
119129
for(int i=1;i<=tot;++i)
130if(!dfn[i])
131tarjan(i);
132for(int i=1;i<=tot;++i)
133for(int j=tp1.head[i];j;j=tp1.nex[j])
134if(col[i]!=col[tp1.ver[j]])
135139 spfa();printf("%d"
,ans);
140return0;
141 }
SDOI2010 所駝門王的寶藏
在寬廣的非洲荒漠中,生活著一群勤勞勇敢的羊駝家族。被族人恭稱為 先知 的alpaca l.sotomon是這個家族的領袖,外人也稱其為 所駝門王 所駝門王畢生致力於維護家族的安定與和諧,他曾親自率軍粉碎河蟹帝國主義的野蠻侵略,為族人立下赫赫戰功。所駝門王一生財寶無數,但因其生性節儉低調,他將財寶埋藏...
SDOI2010 所駝門王的寶藏
題面 題解我寫的是讓同一行 同一列的點形成乙個環,表示它們互相可達。aysn 寫的是對於同一行列建乙個新點表示互相可達。看了窩還是太弱了,還須多練。include include include include include include include include define ri re...
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行...