多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 北大ACM3669――Meteor Shower~~簡單的廣搜

北大ACM3669――Meteor Shower~~簡單的廣搜

來源:程序員人生   發布時間:2015-07-29 08:21:31 閱讀次數:2745次

這1題,簡單的廣搜的利用,只是題目的陷進比較多。

題目大概的意思是,1個人在Point(0,0)的位置,然后會有隕石墜落,隕石墜落的地方的上下左右中都會被砸毀,每個隕石會在第T秒墜落。問你找到1個安全的地方的最短時間,否則輸出⑴.

下面是AC的代碼,有詳細的注釋:

#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using namespace std; const int MAX = 50005; //隕石最大數量 class data { public: int x, y, Time; }; data s[MAX]; //隕石墜落的位置和時間 int map[305][305], M; //map表示point(i, j)位置運算墜落的最早時間。 bool safe[305][305], vis[305][305]; //safe是安全的地方,則為true int xy[4][2] = {⑴, 0, 0, 1, 1, 0, 0, ⑴};//4個方位 int bfs() { queue<data>que; data temp, te; temp.x = temp.y = temp.Time = 0; //開始位置0,0和時間為0; que.push(temp); vis[0][0] = true; //標記已返問過 while(!que.empty()) { te = que.front(); que.pop(); for(int i = 0; i < 4; i++) //4個方位進行搜索 { int x = te.x + xy[i][0]; int y = te.y + xy[i][1]; int time = te.Time + 1; if(x >= 0 && y >= 0 && map[x][y] > time && !vis[x][y]) //沒返問過的,隕石還衰敗下的位置可以走 { if(safe[x][y]) //如果找到安全地方,返回時間。 return time; vis[x][y] = true; //標記已返問過 temp.x = x; temp.y = y; temp.Time = time; que.push(temp); //入隊 } } } return ⑴; //不能找到安全地方 } int main() { // freopen("data.txt", "r", stdin); //這里忘記注釋掉了,wr了1次,坑 int i, j, k; while(scanf("%d", &M) != EOF) { memset(safe, true, sizeof(safe)); //初始化safe memset(vis, false, sizeof(vis)); //初始化vis for(i = 0; i < 305; i++) //初始化map for(j = 0; j < 305; j++) map[i][j] = 10000000; for(i = 0; i < M; i++) { scanf("%d%d%d", &s[i].x, &s[i].y, &s[i].Time); safe[s[i].x][s[i].y] = safe[s[i].x - 1][s[i].y] = safe[s[i].x][s[i].y - 1] = safe[s[i].x + 1][s[i].y] = safe[s[i].x][s[i].y + 1] = false; //標記隕石會砸到的地方 } data temp; for(j = 0; j < M; j++) //更新map中每個位置隕石最早掉落的時間,注意,是最早的時間。 { //剛開始忘記斟酌這1點了。墜落的時間不是降序 temp = s[j]; if(map[temp.x][temp.y] > temp.Time) map[temp.x][temp.y] = temp.Time; for(k = 0; k < 4; k++) { int x = temp.x + xy[k][0]; int y = temp.y + xy[k][1]; if(x >= 0 && y >= 0 && map[x][y] > temp.Time) map[x][y] = temp.Time; } } if(map[0][0] == 0) //開始時,隕石就砸下來了,就直接死掉了,⑴; printf("⑴ "); else printf("%d ", bfs()); } return 0; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩爱爱小视频 | 亚洲国产系列一区二区三区 | 国产精品自拍一区 | 国产欧美精品专区一区二区 | 国产性色视频在线高清 | 最近更新在线中文字幕一页 | 久久九九久精品国产 | 女人一级特纯黄大片色 | 日韩乱轮 | 久久福利院 | 国产精品成人观看视频国产 | 欧美成人性视频播放 | 成年人网站在线观看视频 | 国产中文字幕在线 | 亚洲日韩中文字幕在线播放 | 最近最新中文字幕大全高清6 | 欧美成人一区二区三区在线视频 | 国产精品视频播放 | 日本黄色大片 | 欧美人与禽xoxo性伦交 | 黄色在线网站 | 亚洲精品欧美精品一区二区 | 日产日韩亚洲欧美综合搜索 | 日韩一区国产二区欧美三区 | a级一级黄色片 | 波多野结衣一区二区三区在线观看 | 天堂网成人 | www.91色.com| 国产成人av在线 | 日本不卡视频在线视频观看 | 有码一区| 国产h视频| 国产亚洲人成网站在线观看 | 午夜老司机在线观看 | 日本免费一区二区三区三州 | 日本护士xxxxx18.19 | 欧美日韩精品一区三区 | 日本精品一区二区三区在线观看 | 免费观看欧美成人1314色 | 五月伊人网 | 最新中文字幕日本 |