problem 2028 時空門問題
在乙個n*m的地圖上旅行。地圖上有些地方可以走用. 表示,不能走用 # 表示。在可以走的地方上下左右移動一格需要乙個單位時間。可以走的地方還有一些時空之門。時空之門可以減少旅行的時間。如果 a 到 b 有一道時空之門,那麼從 a 到 b 經過時空之門只要 1 個單位時間。在乙個點可以有很多門通向其他的不同點。現在 john 在 s 點,他想以最快的時間到 t 點。求出最短時間。
輸入包含多組資料 輸入資料第一行兩個正整數 n m (1< n,m <= 500) 接著 n 行,每行 m 個字元 表示地圖。#表示不可走,.表示可以走,s表示開始位置,t表示終止位置。乙個地圖中只有乙個s與1個t. 接著 n*m 行,給出每個點的時空之門。按行優先給出,即給出的順序為(1,1),(1,2) ….. (1,m) ,(2,1)....(2,m)....。 每行第乙個數 k 表示該點的時空之門數,接著給出 k 個點,表示該點通向這k個點的時間為1。其中時空之門的個數不超過100000。對於50%的資料,時空之門的個數為0 在給出的資料中,不能走的點#的時空之門數一定為0,且沒有通向不能走的點的時空之門。
s 到 t 的最短時間。資料保證s可以走到t。
2 2s#t.0000 1
福州大學第八屆程式設計競賽
就多了幾個傳送門,vector來存
#include #include #include #include #include #include #include #include using namespace std;
const int maxn =555;
const int inf = 0x3f3f3f3f;
struct node
};int dir[4][2]=;
vectormen[maxn][maxn];
char mp[maxn][maxn];
int flag[maxn][maxn];
int sx,sy;
int n,m;
int check(int x,int y)
int bfs(int x,int y)
int step=s+1;
for(int i=0;i=flag[xx][yy]) continue;
else
} for(int i=0;i<4;i++)
} }return -1;
}int main()
for(int i=1;i<=n;i++)
}} printf("%d\n",bfs(sx,sy));
}}
2 02 理解查詢模型
示例 select name from users where age 10 可以形象的看作是下面這樣 let arr let users users.foreach item 是指列與列之間進行運算得出的結果,叫做廣義投影 因為null 表達的意思是 空 null null false null ...
FZU 單詞問題
給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字元 不包含空格 句子長度不超過 10...
fzu 單詞問題
description 給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。input 輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字...